博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
java 圆圈待响应,java-有什么办法可以使圆圈从可移动对象的顶部反弹?
阅读量:5170 次
发布时间:2019-06-13

本文共 2529 字,大约阅读时间需要 8 分钟。

从本质上讲,我只需要一些有关如何使圆从活动对象反弹的指导.我遇到了麻烦,已经尝试了三个小时,因此向论坛寻求帮助.我尝试了多个“ if”语句,但显然我无法正确理解,因为没有一个起作用.谢谢 :)

我已经尝试了3个小时,用不同的if语句弄清楚了这一点.

float x;

float easing = 1;

float circle_x = 1;

float circle_y = 30;

float rad = 12.5;

float gravity = 0.98;

float move_x = 5;

float move_y = 5;

void setup() {

size(640, 480);

frameRate(60);

}

void draw() {

background(#87CEEB);

fill(#7cfc00);

rect(0, 430, 640, 80);

float targetX = mouseX;

float dx = targetX - x;

x += dx * easing;

fill(#000000);

rect(x, 400, 30, 30);

rect(x-20, 390, 70, 10);

rect(x, 430, 5, 20);

rect(x+25, 430, 5, 20);

ellipse(circle_x, circle_y, 25, 25);

circle_x = circle_x + move_x;

circle_y = circle_y + move_y;

if (circle_x > width) {

circle_x = width;

move_x = -move_x;

}

if (circle_y > height) {

circle_y = height;

move_y = -move_y;

}

if (circle_x < 0) {

circle_x = 0;

move_x = -move_x;

}

if (circle_y < 0) {

circle_y = 0;

move_y= -move_y;

}

}

将任何变量插入到if语句中,然后只接收回来:我的鼠标光标(不是对象)将球反弹,毛刺的圆圈和模糊的图像.

解决方法:

必须检查球的x坐标是否在对象的范围内(objW是对象的宽度):

circle_x > x && circle_x < x + objW

并且如果球的y坐标已达到对象的高度(objH是对象的高度,而circleR是球的半径):

circle_y > objH - circleR

此外,重要的是要先进行命中测试,然后在物体反弹后再进行测试.一个好的样式是在else if语句中执行此操作:

int objX1 = -20;

int objX2 = 70;

int objH = 390;

int circleR = 25/2;

if (circle_x > x + objX1 && circle_x < x + objX2 && circle_y > objH - circleR ) {

circle_y = objH-circleR;

move_y = -move_y;

}

else if (circle_y > height) {

circle_y = height;

move_y = -move_y;

}

else if (circle_y < 0) {

circle_y = 0;

move_y= -move_y;

}

此外,我建议先计算球的位置,然后在当前位置绘制球:

4f21118c8f862645d2260cdb8a8272bd.gif

float x;

float easing = 1;

float circle_x = 1;

float circle_y = 30;

float rad = 12.5;

float gravity = 0.98;

float move_x = 5;

float move_y = 5;

void setup() {

size(640, 480);

frameRate(60);

}

void draw() {

background(#87CEEB);

fill(#7cfc00);

rect(0, 430, 640, 80);

float targetX = mouseX;

float dx = targetX - x;

x += dx * easing;

circle_x = circle_x + move_x;

circle_y = circle_y + move_y;

if (circle_x > width) {

circle_x = width;

move_x = -move_x;

}

else if (circle_x < 0) {

circle_x = 0;

move_x = -move_x;

}

int objW = 70;

int objH = 390;

int circleR = 25/2;

if (circle_x > x && circle_x < x + objW && circle_y > objH-circleR ) {

circle_y = objH-circleR;

move_y = -move_y;

}

else if (circle_y > height) {

circle_y = height;

move_y = -move_y;

}

else if (circle_y < 0) {

circle_y = 0;

move_y= -move_y;

}

fill(#000000);

rect(x, 400, 30, 30);

rect(x-20, 390, 70, 10);

rect(x, 430, 5, 20);

rect(x+25, 430, 5, 20);

ellipse(circle_x, circle_y, 25, 25);

}

标签:bounce,java,object,processing

来源: https://codeday.me/bug/20191210/2105256.html

转载地址:http://dqhiv.baihongyu.com/

你可能感兴趣的文章
qt安装遇到的错误
查看>>
java:Apache Shiro 权限管理
查看>>
objective c的注释规范
查看>>
FreeNas安装配置使用
查看>>
Django(一)框架简介
查看>>
Python操作SQLite数据库的方法详解
查看>>
菜单和工具条(二)
查看>>
hadoop17---RPC和Socket的区别
查看>>
使用JMeter代理录制app测试脚本
查看>>
Linq to Object实现分页获取数据
查看>>
mac常用系统命令
查看>>
android上传文件到服务器
查看>>
我回答了90%的面试题,为什么还被拒?
查看>>
Html - Table 表头固定和 tbody 设置 height 在IE不起作用的解决
查看>>
HDU 2262 回溯算法 递归枚举
查看>>
九度0J 1374 所有员工年龄排序
查看>>
微信小程序图片使用示例
查看>>
Ubuntu16.04+cuda8.0rc+opencv3.1.0+caffe+Theano+torch7搭建教程
查看>>
1.开发准备
查看>>
centos su命令
查看>>