2013-07-05 12 views
0

그래서 나는 2D 슈터 당신이 촬영 마우스를 사용하고 코드 : 모든 글 머리 기호가 오른쪽으로 이동촬영 글 머리 기호, Math.atan2

timeSinceLastShot+=timeSinceLastFrame; 
     double bullet_angle = Math.atan2(MyMouseListener.getClickPosY()-posY, MyMouseListener.getClickPosX()-posX); 
     float bullet_startX = posX+(skin.getWidth()/2)-(Bullet.getImg().getWidth()/2); 
     float bullet_startY = posY+(skin.getHeight()/2)-(Bullet.getImg().getHeight()/2); 
     double bullet_speedX = Math.cos(bullet_angle * Math.PI/180)*500; 
     double bullet_speedY = Math.sin(bullet_angle * Math.PI/180)*500; 

     if(timeSinceLastShot>(1f/shotsPerSec) && MyMouseListener.isButtonClicked(MouseEvent.BUTTON1)){ 
      bullets.add(new Bullet(bullet_startX, bullet_startY, bullet_speedX, bullet_speedY)); 
      timeSinceLastShot = 0; 
     } 

을,하지만 난 그들의 방향으로 정확히 가고 싶어 마우스.

+1

저는 Java *를 추측하고 있습니다. 그게 아니라면 당신의 언어에 태그를 달아 주시겠습니까? C++? – Ryan

+0

@minitech는 C++ 일 수 없습니다. 클래스 분리자는'.' 여기에 있습니다. C# 또는 Java입니다. –

+0

@ColeJohnson : Can not C# - '수학'방법이 대문자로 시작됩니다. 감사! – Ryan

답변

0

나는 bullet_angle를 라디안으로 변환하려하지만 이미 라디안으로 생각합니다. 본질적으로 bullet_speed는 각도 = 0에서 계산됩니다. 바로 오른쪽입니다. cos() 및 sin() 계산에서 "* Math.PI/180"을 제거하십시오.

timeSinceLastShot+=timeSinceLastFrame; 

double bullet_angle = Math.atan2(MyMouseListener.getClickPosY()-posY, MyMouseListener.getClickPosX()-posX); 
float bullet_startX = posX+(skin.getWidth()/2)-(Bullet.getImg().getWidth()/2); 
float bullet_startY = posY+(skin.getHeight()/2)-(Bullet.getImg().getHeight()/2); 
double bullet_speedX = Math.cos(bullet_angle)*500; 
double bullet_speedY = Math.sin(bullet_angle)*500; 

if(timeSinceLastShot>(1f/shotsPerSec) && MyMouseListener.isButtonClicked(MouseEvent.BUTTON1)){ 
    bullets.add(new Bullet(bullet_startX, bullet_startY, bullet_speedX, bullet_speedY)); 
    timeSinceLastShot = 0; 
} 
+0

답변 해 주셔서 감사합니다. 정말 고맙습니다. – VoidCatz

관련 문제