java怎么固定窗体位置不可移动_java-有什么办法可以使圆圈从可移动对象的顶部反弹?...

本文介绍了如何在Java中让圆圈在碰到不可移动的对象边界时进行反弹。关键在于检查球的x坐标是否在对象范围内,并判断球的y坐标是否到达了对象高度。通过调整坐标和速度,确保球在碰撞后改变方向,实现真实的反弹效果。
摘要由CSDN通过智能技术生成

必须检查球的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,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,20);

ellipse(circle_x,25);

}

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值