我有一个射击水平射弹的敌人精灵。我唯一的问题是,在敌人射击他们的射弹后,它会一直向上移动,直到我的角色目前所在的位置。
让我们说我的敌人在我上方的一个平台上,我站在x轴上-100f远离敌人。敌人射击他们的射弹,它沿着x行进-100f然后被卡住(“悬停”)直接在我的角色精灵头上方。
我的射弹代码如下(为了简单起见,我省略了不影响射弹运动的外来变量):
[SerializeField] GameObject player; // Gets player's current position
private Transform transform;
private Vector2 projectilePosition;
void Update(){
projectilePosition = transform.position;
if (player.transform.position.x < transform.position.x) // if my player sprite is standing to the left of my projectile generator
{
projectilePosition += new Vector2(10f, 0); // projectile flies from left to right
transform.position = projectilePosition;
}
else if (player.transform.position.x > transform.position.x) // if my player sprite is standing to the right of my projectile generator
{
projectilePosition -= new Vector2(10f, 0); // projectile flies from right to left
transform.position = projectilePosition;
}
}
答案 0 :(得分:0)
而不是使用player.transform.position.x
确定纵坐标,你希望射弹向前移动,当创建射弹时,在创建它时将player.transform.position.x < transform.position.x
存储在射弹的局部变量中,所以如果玩家最初是在产卵的左边,它将继续向右移动,反之亦然
实施例
在你的射弹类中,你需要一个布尔值来存储方向,例如:
movingLeft=False
当你实例化射弹时,你需要设置它是向左还是向右移动,所以使用
movingLeft=player.transform.position.x < transform.position.x;
然后在你的代码中替换
带有player.transform.position.x < transform.position.x
的 movingLeft
并将else if (player.transform.position.x > transform.position.x)
替换为else