我需要能够将播放器的头部移动到屏幕上点击鼠标的任何位置

时间:2016-11-14 20:34:54

标签: processing

//this is ender's game
float r = 100;
float g = 150;
float b = 200;
float a = 200;
float f = 100;

float diam = 20;
float dim = 70;

float x = 100;
float y = 100;
float z = 20;

int t = 100;
int s = 100;
int w = 60;
int h = 60;
int eyeSize = 16;
int speed = 1;


void setup() {
  size(480, 270);
  background(239, 172, 238);
}

void draw() {


  // Draw player's head
  fill(255);
  ellipse(t,s-h/2,w,h);

  // Draw player's eyes
  fill(0);
  ellipse(x-w/3+1,y-h/2,eyeSize,eyeSize*2);
  ellipse(x+w/3-1,y-h/2,eyeSize,eyeSize*2);







  // draw the rocks and wall 
  stroke(0);
  //person
    fill(r, f, b, a);
  rect(x+(1.5*x), (y-(.05*z)), dim, diam);


  // draw ellipses
  fill(r, f, b, a);
  ellipse(x, y+(x/2), diam, diam);



    fill(r, g, f, a);
  ellipse(x+(3*x), y+(.5*x), diam, diam);



  fill (f, g, b, a);
  ellipse(x+(2*x), y+y, diam, diam);


  fill(r,f, f, f);
  ellipse(x+y, y+y, diam, diam);






}

我需要能够将播放器的头部移动到屏幕上点击鼠标的任何位置。我还需要确保玩家在撞到岩石或墙壁时停下来。

我对如何使用mousePressed或我应该用哪种功能来解决这个问题感到困惑?

1 个答案:

答案 0 :(得分:0)

mousePressed()非常简单易用。 与您已使用setup()draw()的方式类似。

这是一个最小的例子,在按下鼠标时将背景颜色更改为不同的灰色阴影:

void setup(){
}
void draw(){
}
void mousePressed(){
  background(random(255));
}

请注意,还有一个名为mousePressed的预定义变量。 根据您在代码中使用它的位置,它可能会产生不同的效果。 例如,以下是mousePressed中使用draw()的行为与上述示例相比的行为:

void setup(){
}
void draw(){
  if(mousePressed){
    background(random(255));
  }
}

根据您对草图的注意事项,您可以选择mousePressed()而不是mousePressed或其他方式。

这是一个最小的草图,可以在按下鼠标时更改绘制播放器的x,y位置:

float r = 100;
float g = 150;
float b = 200;
float a = 200;
float f = 100;

float diam = 20;
float dim = 70;

float x = 100;
float y = 100;
float z = 20;

int t = 100;
int s = 100;
int w = 60;
int h = 60;
int eyeSize = 16;
int speed = 1;


void setup() {
  size(480, 270);

}

void draw() {
  //clear every frame
  background(239, 172, 238);

  // Draw player's head
  fill(255);
  ellipse(x,y,w,h);

  // Draw player's eyes
  fill(0);
  ellipse(x-w/3+1,y,eyeSize,eyeSize*2);
  ellipse(x+w/3-1,y,eyeSize,eyeSize*2);

}

void mousePressed(){
  x = mouseX;
  y = mouseY;
}

这并不像从一个位置跳到另一个位置那样移动。 如果您使用mousePressed变量而不是函数,则会拖动。

看看easing逐渐将角色移向目标位置可能会很有趣。