我正在制作一款带有移动摄像头的平台游戏,玩家可以通过传感器来确定他需要放置的位置,以便在平台顶部,无论是斜坡还是简单的地板。当相机没有移动时,传感器正在正常跟随播放器,但是当相机移动以捕捉播放器时,传感器正在跟随延迟,并且看起来他们正在拍摄的测试点采用前一帧相机坐标,即使相机的功能在传感器功能之前。我认为hittestpoint不能处理x,y坐标,它需要实际的对象出现在舞台上然后取其坐标。我对吗? 在传感器的功能之后放置相机的功能并不容易,因为传感器将一直处于延迟状态。 我该怎么办?我真的被卡住了。
这是传感器的功能:
function setSensors(sensor, location):void {
var hx = Math.round(player.x + location * Math.cos(0.01745329 * player.rot));
var hy = Math.round(player.y + location * Math.sin(0.01745329 * player.rot));
player[sensor.name] = false;
var a = 0;
while (a <= 21) {
sensor.x = Math.round(hx + a * Math.cos(0.01745329 * (player.rot + 90)));
sensor.y = Math.round(hy + a * Math.sin(0.01745329 * (player.rot + 90)));
if (blocks.hitTestPoint(sensor.x, sensor.y, true)) {
player[sensor.name] = true;
break;
}
a = a + 1;
}}
答案 0 :(得分:0)
hitTestPoint
适用于舞台坐标,因此您可能应首先将player's
位置转换为全局位置。类似的东西:
var playerGlobalPos:Point = player.localToGlobal( new Point ); // player.x/y in stage coords
var hx = Math.round(playerGlobalPos.x + location * Math.cos(0.01745329 * player.rot));
var hy = Math.round(playerGlobalPos.y + location * Math.sin(0.01745329 * player.rot));