좋아요, 플레이어가 적을 따라 다니는 javascript/html canvas 게임을 만들고 싶습니다. 그리고 '연구'를 조금 해보니 그녀가 내 괴물의 가장 중요한 부분입니다. (적) 클래스 : 그래서적을 움직이는 플레이어를 따라 다니는 데 문제가 있음
this.UpdateAngle = function() {
this.dx = this.x - player.x;
this.dy = this.y - player.y;
this.angle = Math.atan2(this.dy, this.dx) * 180/Math.PI;
if (this.angle < 0) {
this.angle += 2 * Math.PI;
}
}
this.UpdateSpeed = function() {
this.speedX = this.speed * Math.cos(this.angle);
this.speedY = this.speed * Math.sin(this.angle);
}
this.Move = function() {
this.UpdateAngle();
this.UpdateSpeed();
this.x += this.speedX;
this.y += this.speedY;
}
내가 여기서 뭘 무엇을 의미하는지는 atan2()
으로 플레이어에게 적을에서 각도를 계산하고 cos()
를 사용하여 내가 x 및 y 축에서 이동해야합니다 얼마나 계산했다 그리고 sin()
, 속도와 각도 I를 계산 한 다음 계산 된 픽셀을 방금 이동했습니다.
이 모든 것이 잘 작동하는 것처럼 보입니다. 플레이어를 움직이면 적들은 이상한 방향으로 움직이기 시작합니다. 나는 무엇이 잘못 됐는지 전혀 모른다. 누군가가 나를 어떻게 할 수 있는지를 알 수 있다면 그것은 굉장 할 것이다. : D
조치 : here에서 확인할 수 있습니다. * PremierBromanov의 제안으로 코드를 업데이트했습니다.
나는 그 해결책을 알지 못한다. (나는 오랫동안 삼각법을 잊어 버렸다.) 그러나 디버깅 수단으로서 나는 각 엔티티 현재 속도를 보여주는 텍스트와 함께 현재 이동 방향으로 이동합니다. –
나는 너를 도울 수 없다 ... 대신에 나는 또 다른 결점을 발견했다. 죄송합니다! : D 적과 정확히 같은 높이에있을 때 (각도 재 계산을 강제로) 움직이면 _ 대신에 _에서 당신을 시작합니다 : – AJPerez
왜 그들이 이상한 행동을하는지 찾기 위해 플레이어는 키를 누르는 중입니다 ... 나는 많은'console.log()'호출을 각 함수에 적어도 한 번은 추가 할 것이며, 아마도 speedX, speedY 또는 angle을 다시 계산할 때마다 하나씩 호출 할 것입니다. 추적 로그를 분석하고 이동시 발생하는 상황을 비교하십시오. – AJPerez