슈팅게임을 만드는데..적 미사일이 내가 있는 곳으로 쏘게 할려면..
카제
적 비행기에서미사일을 쏘면 그 미사일이 내가 움직이는 비행기의 x,,y좌표를 향하게 미사일을 쏘게 할려는데..
정말 아무리 생각해도 안되서..
결국 저의 잔머리 굴려서 야매로 했습니다.ㅡㅡ;;
적 비행기의 미사일에다가
onClipEvent (load) {
targetX = _root.Myplan._x; //MYplan 는 내가 조정하는 비행기..
targetY = _root.Myplan._y;
firstX = 0.03*(targetX-this._x);
firstY = 0.03*(targetY-this._y);
}
onClipEvent (enterFrame) {
this._x = this._x+firstX
this._y = this._y+firstY
if (this._x=-100) {
this.removeMovieClip();
}
}
이런식으로 했는데 고수분들도 눈치 채셨겠지만
문제는 내가 조정하는 비행기와 적비행기가 멀어지면 미사일이 빠르게 날라오고
가까우면 느릿하게 온다는 겁니다 ㅜㅜ (저의 머리한계)
어디서 봤는데 삼각함수공식이 필요한거 같은데...
혹시 아시는분 알려주세요..ㅜㅜ
-
클
아... 저도 비행기 게임 만들고 있었는데.. 좋은정보 담아갑니다~ ^^
-
별솔
와 정말 감사....ㅜㅜ 제곱근사용이라...생각도 못했네요... 0.03대신 10을 넣으니까 잘되네요..
잘만들어서 여기에 올리겠습니다 ㅜㅜ -
중독적
만약 미사일이 긴 막대 모양이라면 수다님 코드 +
math.atan2()를 사용하셔서 각도를 구하신 다음 미사일을 로테이션 시키면 이쁘게 됩니다. -
단순랩퍼
멋져 +.+
-
갤투
x성분과 y성분의 제곱값의 합을 나눠주면 됩니다.
velocity = Math.sqrt((targetX-this._x)*(targetX-this._x)+(targetY-this._y)*(targetY-this._y));
firstX = 0.03*(targetX-this._x)/velocity
firstY = 0.03*(targetY-this._y)/velocity -
차분나래
근데 리무브가 되나요?-_-ㅋㅋ 부드러운 움직임보다는 enterFrame에 1보다 큰 수(1.05정도)를 곱해주면 총알이 빨라지고 1보다 작은 수(0.95정도)를 곱해주면 총알이 점점 느려지겠죠..