java - 当物体撞击墙壁边缘时,如何根据朝向的方向改变物体的方向?
问题描述
我做了一个可以从边缘反弹的箭头,但我希望箭头在被击中后根据它的方向改变方向。例如,如果箭头朝下,当它击中右侧墙壁时,它需要改变方向,因为它指向底部墙壁,然后向上反弹。当物体反弹并朝不同的方向前进时,我希望箭头面的图像相应改变,以便显示方向,这将是箭头向右下方的右下箭头图像,并且每个方向以此类推。
int xspeed;
int yspeed;
Arrows bob;
int x=50, y=50;
void setup()
{
size(700, 700);
bob = new Arrows(30, 350);
}
void draw()
{
background(255);
bob.update();
x = x+xspeed;
y = y+yspeed;
}
class Arrows {
int x;
int y;
int dx;
int dy;
int speedX = 4;
int speedY = 4;
PImage image1, image2, image3, image4;
//constructor
Arrows(int x, int y)
{
this.x = x;
this.y = y;
image1 = loadImage("Arrow1.png");
image2 = loadImage("Arrow2.png");
image3 = loadImage("Arrow3.png");
image4 = loadImage("Arrow4.png");
}
void update()
{
render();
move();
}
void render()
{
image(image1, this.x, this.y);
}
void move()
{
x +=speedX;
y +=speedY;
if(x<0||x>(width-50))
{ speedX *=-1;}
if(y<0||y>(height-50))
{ speedY *=-1;}
}
}
解决方案
只需根据方向绘制图像
Arrows(int x, int y) {
// [...]
void render() {
if (speedY > 0) {
if (speddX > 0) {
image(image3, this.x, this.y);
} else {
image(image4, this.x, this.y);
}
else {
if (speddX > 0) {
image(image1, this.x, this.y);
} else {
image(image2, this.x, this.y);
}
}
}
推荐阅读
- python - 如何使用 Selenium 同时与不同的窗口进行交互?
- php - 使远程服务器的客户端(Raspberry pi,php)可以访问键盘
- php - 如何在 PHP 的新行上更改变量值
- kotlin - kotlin coroutine - 在协程内部调用时如何确保某些命令在 UI 主线程上运行?
- android - Uber RideRequestButton 不显示美国以外国家/地区的估算值
- php - 将自定义类添加到在 Woocommerce 中显示“缺货”的变体选项
- c# - 从左到右为多行排序列表数据
- java - DirectRunner 不会按照我在 Beam Java SDK 中使用 FixedWindows 指定的方式从 Pub/Sub 读取
- php - POST JSON MULTIDIMENSIONAL PHP 不工作
- json - SyntaxError:JSON 中位置 0 的意外标记 B - JSON Rest API