2016-04-10 20 views
0

少し問題があります。私は処理を使って基本的なアルカノイドを作成していますが、マウスでパドルを動かす方法を理解することはできません。私は現在、この例のクリックで移動するように設定しています。あなたはパドルは、あなたがあれば、ちょうどその外側を取り除く、それを押していない場合であっても、マウスをフォローしたい場合はマウスでパドルを動かす(アルカノイド)

​​

:あなたはすでにここのロジックを持って

void setup() { 

size(400, 400); 
rectMode(CENTER); 
ellipseMode(CENTER); 
} 

void draw() { 
    background(#EFF8FB); 

    batMain(); 
    ballMain(); 
} 

float ballX = 200, ballY = 200; 
float direction = PI * .3f; 
byte speed = 4; 

final static byte ballSize = 20; 
final static color ballColor = #2EFE2E; 

void ballMain() { 
    // Draw the ball 
    fill(ballColor); 
    ellipse(ballX, ballY, ballSize, ballSize); 


    ballX += speed * cos(direction); 
    ballY += speed * sin(direction); 
    walls(); 

    if (direction > TWO_PI)  direction -= TWO_PI; 
    else if (direction < -TWO_PI) direction += TWO_PI; 
} 

short a = 200; 

final static color batColor = #5858FA; 

void batMain() { 
    // Draw the bat 
    fill(batColor); 
    rect(a, 380, 60, 10); 
    noStroke(); 

    if (mousePressed) { 

    // Right side of the screen 
    if (mouseX > width>>1) a += 4; 
    // Other side of the screen 
    else      a -= 4; 
    } 


    if (ballY + 10 > 375 && ballY + 10 < 385 && ballX + 10 > a - 30 && ballX - 10 < a + 30) { 

    if (ballX + 10 > a - 30 && ballX < a - 15) { // Left part 
     direction = TWO_PI - direction; 
     ++speed; 
    } 

    else if (ballX - 10 < a + 30 && ballX < a + 15) { 
     direction = TWO_PI - direction; 
     ++speed; 
    } 
    else { 
     direction = TWO_PI - direction; 
     speed = 4; 
    } 
    } 
} 

void walls() { 

    if (ballX < 10) { 
    ballX = 11; 
    direction = PI - direction; 
    } 
    if (ballX > 390) { 
    ballX = 389; 
    direction = PI - direction; 
    } 
    if (ballY < 10) { 
    ballY = 11; 
    direction = TWO_PI - direction; 
    } 
    if (ballY > 390) { 
    ballY = 389; 
    direction = TWO_PI - direction; 
    } 
} 
+0

mouseEventが渡されるmouseMoved関数をコード化できません。マウスの移動距離を示すgetXおよびgetYプロパティが含まれている必要があります。パドルの現在のX位置をmouseEventのgetX値で変更するだけです。 –

答えて

0

ステートメント:

// Right side of the screen 
    if (mouseX > width>>1){  
     a += 4; 
    } 
    // Other side of the screen 
    else{ 
     a -= 4; 
    } 

パドルをマウスの位置にしたい場合は、それを直接使用してください:

a = mouseX; 
+0

コメントありがとうございます。あなたが投稿した最初の声明を試してみるとうまくいきました。しかし、私は試しました a = mouseX とエラーが発生しました –

+0

@ GregoryHartleyおそらくあなたの 'a'変数は' short'で 'mouseX'は' int'です。 'a'を' int'または 'float'にしてください。 –

+0

画面の右側でしか動作していないようです。マウスを左に動かすとパドルが途中で止まる –

関連する問題