WASD 키와 포탑을 마우스 포인터로 사용하여 전함을 제어하는 전함 시뮬레이터를 만들고 있습니다. 포탑은 360도 움직일 수 있습니다.탱크와 회전 터렛 AS3
필요에 따라 회전합니다. 그러나 마우스 포인터가 터릿을 0도 또는 360도 각도에 도달 할 때마다 마우스 포인터를 다시 다른 각도로 움직일 때까지 끝없이 회전하기 시작합니다.
var PTurret1angle:Number = 270;
function PTurretRotate(Evt:Event){
var Turret1x:Number;
var Turret1y:Number;
var Turret1Angle:Number;
Turret1x = mvi_PTurret1.x - mouseX;
Turret1y = mvi_PTurret1.y - mouseY;
Turret1Angle = Math.round(Math.atan2(Turret1y,Turret1x) * (180/Math.PI) + 180);
if(Turret1Angle > PTurret1angle){
mvi_PTurret1.rotation += 1;
PTurret1angle += 1;
if(PTurret1angle == 360){
PTurret1angle = 0;
}
}
else if(Turret1Angle < PTurret1angle){
mvi_PTurret1.rotation -= 1;
PTurret1angle -= 1;
if(PTurret1angle == 0){
PTurret1angle = 360;
}
}
txt_Turret1Angle.text = Turret1Angle.toString();
txt_PTurret.text = PTurret1angle.toString();
}
그래서, 내 두 가지 질문은 다음과 같습니다 : 첨부
는 지금까지 터렛 운동이 코드입니다
1) 어떻게 포탑에에 고정됩니다 수 있도록 할 곳 마우스 포인터는 마우스 포인터 위치에 관계없이 있습니까?
2) 회전을보다 효율적으로 만들 수있는 방법이 있습니까? 예를 들어, 내 포인터가 터렛이 약 30 도만 돌리도록 요구하는 경우 실제로 상황에 따라 330도 회전합니다.
도움 주셔서 감사합니다.
if(PTurret1angle == 0){
PTurret1angle = 360;
}
및
if(PTurret1angle == 360){
PTurret1angle = 0;
}
이 당신의 끝없는 회전 (위에 마우스, 각도가 제로를 만들고, 각도로 설정 :
감사합니다 (참고. psuedocode보다 더 실제 코드이었다 사실은 그래서/작동하지 않을 수 있지만 그것을 테스트하지 않은)! 포탑은 더 이상 0도에서 멈추지 않습니다. 이는 굉장합니다. 그러나, 나는 효율적인 회전과 함께 약간의 문제를 아직도 가지고있다. 혹시라도 가짜 코딩 제안에 당신을 데려 갈 수 있을까요? 나는 as3을 처음 접했을뿐 프로그래밍에 능숙하지 않기 때문에 내 자신을 가질 수있을 때까지 외부의 지침이 필요합니다. – Mario
단순히 360을 초과하는 것을 감싸는 % 360을 사용하지 않는 것이 어떻습니까? –
@ 루이스 : 고마워! 그것은 위대한 지금 작동합니다. – Mario