首页 > 解决方案 > 当物体撞击墙壁边缘时,如何根据朝向的方向改变物体的方向?

问题描述

我做了一个可以从边缘反弹的箭头,但我希望箭头在被击中后根据它的方向改变方向。例如,如果箭头朝下,当它击中右侧墙壁时,它需要改变方向,因为它指向底部墙壁,然后向上反弹。当物体反弹并朝不同的方向前进时,我希望箭头面的图像相应改变,以便显示方向,这将是箭头向右下方的右下箭头图像,并且每个方向以此类推。

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;}
    
  }   
}
 

标签: javaprocessing

解决方案


只需根据方向绘制图像

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);
           } 
       }
   } 

推荐阅读