2011-02-26 6 views
2

초보자 용 질문 일지 모르지만 독서에 감사드립니다. 나는 다음 코드를 사용하여 객체의 위치를 ​​추적하는 미사일을 가지고있는 2d 자바 게임에 착수했다. 나는 미사일이 목표물로부터 일정한 최소 변위에 도달했을 때 원점 복귀를 멈추고 싶다. 현재 미사일이 최소 변위 이내 일 때마다 원점 복귀 동작이 꺼지고 변위가 증가하면 다시 켜집니다. 미사일 수명 연장을 위해 한 번만 작동을 해제하고 싶습니다. 어떻게해야합니까?Java에서 원점 미사일 행동

public void home(int targetX, int targetY, int scale){ 
    int dy = targetY - y; 
    int dx = targetX - x; 
    double speed, sep; 

    sep = Math.sqrt(dx * dx + dy * dy); 
    speed = scale/sep; 

    if(dy > 50 || dx > 50){ 
     x += dx * speed; 
     y += dy * speed; 
    } 
    else{ 
     x += 0; 
     y += scale; 
    } 
} 
+0

gamedev.se에 속한 것 같습니다 ... –

답변

6

boolean homing = true과 같은 멤버 변수를 추가하십시오. 그런 다음, 다음과 같이 무엇인가에 조건을 변경 : 당신은 기본적으로 당신 미사일의 행동과 상태 사이의 상호 의존을 중단 할 필요가

if (dy < 50 && dx < 50) 
    homing = false; 

if(homing){ 
    x += dx * speed; 
    y += dy * speed; 
} 
else{ 
    x += 0; 
    y += scale; 
} 

.

+0

나는 이것을 시도했지만 문제점이 있습니다. 컴파일러는 첫 번째 명령문이 false로 평가되면 'homing'에 값이 없기 때문에 불평합니다. 그런 다음 메서드의 맨 위에서 '원점 복귀'를 시작하려고 시도하지만 true 및 false 시작 값은 모두 잘못된 동작을 초래합니다. 그래도 고마워. 적어도 올바른 길을 가고 있다는 것을 알게됩니다. – emmett9001

+2

@ emmett9001 :'home' 메소드에서 변수를 초기화하지 말고 대신 클래스 생성자에서 초기화하십시오. 또는, 정말로, 다른 어떤 방법 ** 그러나 **'home'. 미사일이 처음 발사 될 때마다 호출되는 '발사 (launch)'방법 또는 이와 비슷한 것이 있다면 생각해 보라. * 그것은 '호밍 = 참'을 놓기에 이상적인 곳이다. – Mac

+2

도움을 주셔서 대단히 감사합니다! 나는 아마 나 자신을 알아낼 수 있었어야했는데 ... 그래도 감사합니다. – emmett9001