Unity 2D-精灵在跟随对象时闪烁

本文关键字:对象 闪烁 跟随 2D- 精灵 Unity | 更新日期: 2023-09-27 18:26:58

im创建一个简单的脚本,该脚本告诉游戏对象它需要在定义的距离内跟随其他游戏对象。

代码:

void Update()
{
    objPos = GameObject.FindGameObjectWithTag("Player").transform.position;
    transform.position = new Vector3(objPos.x + 0.5f, objPos.y + 0.5f);
}

问题是:以下游戏对象正在闪烁。当你观看它时,它似乎落后于跟随的游戏对象几帧。我以前在我早期的原型中注意到了它,但现在它对我的新游戏至关重要。所以我认为这是一个非常普遍的问题。

这种不必要的行为有解决办法吗?

感谢

Unity 2D-精灵在跟随对象时闪烁

GameObject.FindGameObjectWithTag("Player")的性能成本很高,不是每帧都使用它,而是保存一个玩家的实例。如果玩家在场景中保持不变,

public Transform playerTransform;
void Update()
{
    transform.position = playerTransform.position + new Vector3(0.5f, 0.5f);
}

然后使用检查器将Unity编辑器中的Player变换指定给该对象。(或在代码中动态)

如果您的Player对象被破坏,并且一个新的对象偶尔实例化一次,您可以将新的对象分配给跟随对象,也可以使用类似以下的简单访问器方法:

Transform _playerTransform;
Transform playerTransform
{
    get
    {
        if(_playerTransform == null)
        {
            _playerTransform = GameObject.FindGameObjectWithTag("Player").transform;
        }
        return _playerTransform;
    }
}
void Update()
{
    transform.position = playerTransform.position + new Vector3(0.5f, 0.5f);
}