我不知道接下来该做什么。 现在,当我点击时,它会添加子弹并将其旋转到正确的角度,但我不知道如何使其发射。我希望将子弹射到鼠标指向的位置。谢谢! PS:对不起代码很乱。
package
{
import flash.display.MovieClip;
import flash.display.Sprite;
import flash.events.Event;
import flash.events.TimerEvent;
import flash.events.KeyboardEvent;
import flash.utils.Timer;
import flash.text.Font;
import flash.events.MouseEvent;
import flash.text.TextDisplayMode;
import flash.text.TextExtent;
import flash.text.TextField;
import flash.text.TextFormat;
import fl.motion.easing.Back;
import flash.display.DisplayObject;
public class GameEnter extends MovieClip
{
public var _bullet:bullet;
public function GameEnter()
{
stage.addEventListener(MouseEvent.MOUSE_DOWN, shootBullet);
stage.addEventListener(MouseEvent.MOUSE_UP, removeBullet);
}
public function init()
{
_bullet = new bullet();
addChild(_bullet);
_bullet.x = stage.stageWidth / 2;
_bullet.y = stage.stageHeight / 2;
addEventListener(Event.ENTER_FRAME, onEnter);
}
public function onEnter(event:Event)
{
var dx:Number = mouseX - _bullet.x;
var dy:Number = mouseY - _bullet.y;
var angle:Number = Math.atan2(dy,dx) * 180 / Math.PI;
_bullet.rotation = angle;
}
public function shootBullet(event:MouseEvent)
{
init();
}
public function removeBullet(event:MouseEvent)
{
removeChild(_bullet);
}
}
}
答案 0 :(得分:2)
要根据旋转方向移动对象,您需要cos
和sin
。
Math.cos()
和Math.sin()
只接受弧度,因此您需要将旋转转换为弧度,就像您的示例中的Math.atan2()
一样。
样品:
// Note: Utilising the property 'angle' from your code.
_bullet.x += Math.cos(angle);
_bullet.y += Math.sin(angle);
然后显然将这些值乘以一个值,该值表示你想要子弹的速度,例如:
var velocity:Number = 10.5;
_bullet.x += Math.cos(angle) * velocity;
_bullet.y += Math.sin(angle) * velocity;