我正在使用AS3在Flash CS4中制作一个自上而下的射击游戏。
当我射击子弹时。我已将其起始位置设置为player.x和player.y。但这就是玩家movieclip的“头”所在的位置。我希望它是从Gun所在的地方创建的。
我在Player movieclip中制作了另一个名为“NewShootingPoint”的电影剪辑,并将其定位在枪的位置。
我找不到任何适当的localToGlobal参考建议我。我知道localToGlobal将一个movieclip的本地位置转换为全球位置。但是我该怎么做?
我试过这个:(新代码)
package {
import flash.display.MovieClip;
import flash.geom.Point;
import flash.display.Stage;
import flash.events.MouseEvent;
import flash.events.Event;
public class Main extends MovieClip {
//var myPoint : Point = new Point(340.1, 232.2);
var player : Player = new Player;
var origin : Gun = new Gun();
var bullet : Bullet = new Bullet();
public function Main() {
stage.addEventListener(MouseEvent.MOUSE_DOWN, onMouseDownHandler);
player.x = stage.stageWidth/2;
player.y = stage.stageHeight/2;
stage.addChild(player);
}
function onMouseDownHandler(e:Event) {
// I want this to happen.
bullet.x = origin.x;
bullet.y = origin.y;
// But it's still stuck at (0,0)
stage.addChild(bullet);
bullet.addEventListener(Event.ENTER_FRAME, thingy);
}
function thingy(e:Event) {
bullet.x += 10;
bullet.y += 10;
}
}
}
是。我知道我应该上课。我稍后会这样做。 请为此提出建议!
答案 0 :(得分:0)
The documentation on localToGlobal
is here.
关键是理解并使用该方法来对准正确的局部坐标空间和局部坐标,文档明确说明但仍然令人困惑。
根据我的经验,虽然使用目标对象的x,y作为局部点是本能的,但通常最简单的方法是将目标对象用作点0,0的局部坐标空间。例如,在您的情况下,这将是:
var bulletOrigin:Point = player.shootingPoint.localToGlobal(new Point(0, 0));