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

时间:2015-12-15 19:23:28

标签: c# unity3d

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

代码:

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

}

问题是:以下gameobject正在闪烁。当你观看它时,它似乎落后于游戏对象几帧。我在之前的原型中注意到了它,但现在它对我的新游戏来说非常重要。所以我认为这是非常常见的问题。

是否存在这种不良行为的解决方案?

由于

1 个答案:

答案 0 :(得分:0)

GameObject.FindGameObjectWithTag(“播放器”)具有高性能成本,而不是每帧使用它,持有播放器的实例。如果玩家在场景中保持不变,

public Transform playerTransform;

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

然后使用inspector将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);
}