如何让敌人精灵翻转?

问题描述 投票:0回答:1

所以没什么特别的,实际上很简单,但我仍然在努力。我有一个敌人,我想在他的 X 值增加时翻转精灵,相反,在我的 PlayerMovement Skript 中,这种方法有效,但现在不再有效。

 private void UpdateDirection()

 {
     if (transform.position.x < -.1f) 
     {
         spr.flipX = true; 
     }
     else
     {
         spr.flipX = false; 
     }
 }
c# unity-game-engine artificial-intelligence velocity rigid-bodies
1个回答
0
投票

这是一个实现示例:

private Vector2 previousPosition;
private SpriteRenderer spr;

private void Start()
{
    // Initializes previous position
    previousPosition = transform.position;
    spr = GetComponent<SpriteRenderer>();
}

private void Update()
{
    UpdateDirection();
    // Update the previous position for the upcoming frame
    previousPosition = transform.position;
}

private void UpdateDirection()
{
    // Checks if the enemy has moved horizontally
    if (transform.position.x > previousPosition.x) 
    {
        // Move right
        spr.flipX = false;
    }
    else if (transform.position.x < previousPosition.x)
    {
        // Move left
        spr.flipX = true;
    }
}

逻辑:

  • previousPosition
    用于存储前一帧中敌人的位置。
    previousPosition
    在每次 Update 调用结束时更新,因此它始终代表前一帧中的位置。
  • UpdateDirection
    检查敌人相对于之前的位置是否向左或向右移动,并相应地翻转精灵。
© www.soinside.com 2019 - 2024. All rights reserved.