【发布时间】:2015-12-15 19:23:28
【问题描述】:
我正在创建一个简单的脚本,告诉游戏对象它需要在定义的距离内跟随其他游戏对象。
代码:
void Update()
{
objPos = GameObject.FindGameObjectWithTag("Player").transform.position;
transform.position = new Vector3(objPos.x + 0.5f, objPos.y + 0.5f);
}
问题是:以下游戏对象闪烁。当您观看它时,它似乎落后于跟随的游戏对象几帧。我之前在我早期的原型中注意到了它,但现在它对我的新游戏至关重要。所以我认为这是很常见的问题。
是否有解决这种不良行为的方法?
谢谢
【问题讨论】:
-
只是为了好玩,将方法名称更改为
LateUpdate()有什么意义吗?玩游戏的时候有没有开启垂直同步?您应该明确地观察它在 60FPS 时与未锁定时的行为。您确定闪烁与精灵顺序(即图层中的顺序)无关吗?如果它们在同一层上,则会导致可见的闪烁,因为这些对象的 z-Order 会随机变化。在性能方面,修复objPos是明智的(例如,将其公开并在检查器中分配),每次搜索可能代价高昂。 -
您是在寻找真正的“跟随”(意味着速度在方程式中),还是让物体静态始终与玩家物体保持 0.5x.5 的距离?
-
我之前试过 LateUpdate。同样的结果。更改图层顺序无济于事。单独存储游戏对象也无济于事。
-
我正在寻找静态距离玩家 0.5 x 5 的游戏对象。 (不是字面上的 0,5,而是仅用于测试目的)
-
好吧..我相信你可以制作一个预制件,让玩家对象和箭头对象都是它的孩子。然后你应该能够独立于箭头旋转播放器,并且仍然保留箭头的偏移位置。您可以通过预制位置设置精灵位置,但在嵌入式播放器精灵中旋转。希望这是有道理的。