我的游戏是一种简单的2D自上而下的设计风格。我已经有了跟随玩家的敌人,但我不知道如何使敌人面对他。我甚至不知道从哪里开始。
这是让我的敌人跟随玩家的代码:
if ( enemy.x > player.x ){
enemy.x -= 7;
}else {
enemy.x += 7;
{
if ( enemy.y > player.y ){
enemy.y -= 7;
}else {
enemy.y += 7;
{
答案 0 :(得分:2)
我假设你有一个确定敌方方向的变量。另外,假设您只使用了四个基数方向。
你可以简单地比较一下敌人 x,y 坐标与玩家的比较。
sudo代码:
if enemy x > player x // player is to the left of the enemy
enemy face left
else if enemy x < player x // player is to the right of the enemy
enemy face right
else if enemy y > player y // player is below the enemy
enemy face down
else
enemy face up
这将使你的敌人几乎总是面向左/右。通过比较敌人 x / y 与玩家 x / y 相比的增量,你可以在完成这项工作后获得更多参与。
类似的东西:
delta x = abs(player x - enemy x)
delta y = abs(player y - enemy y)
if delta x > delta y // Enemy is further away on the x axis than the y axis
make a choice of facing left/right
else
make a choice of facing up/down
希望这有助于您开始使用。
答案 1 :(得分:2)
如果您希望敌人完全面向玩家,换句话说是完整的360度,您可以计算enemy
和player
之间的角度并使用rotation
财产,像这样:
var angle:Number = Math.atan2(player.y - enemy.y, player.x - enemy.x) * (180 / Math.PI);
enemy.rotation = angle;
为了使其看起来正确,您应该使enemy
的注册位于其中心,使其围绕其中心旋转,并将其向右拉,使角度0朝右