【发布时间】:2018-10-20 11:27:01
【问题描述】:
我制作了一个动画事件,一旦动画完成,它会更新变换位置,然后调用一个方法来检查玩家是否降落在特定的图块上。
但是,变换位置并未立即更新。我写了一个协程等待一小段时间。
一个简单的案例:
public void OnAnimationFinish() {
transform.position = landOn;
Debug.Log("Start from: " + landOn);
JumpIfOnTile();
}
private void JumpIfOnTile() {
// not same if you don't wait
Debug.Log("Start from: " + transform.position);
}
解决方法:
private IEnumerator JumpIfOnTile() {
yield return new WaitForSeconds(.5f);
// then everything ok
Debug.Log("Start from: " + transform.position);
}
【问题讨论】:
-
您确定
JumpIfonTile不是从其他地方调用的吗?这似乎是不可能的,尤其是如果OnAnimationFinish中的第一个Log显示更新后的transform.position。你能在OnAnimationFinish中设置一个断点并测试到底发生了什么吗? -
@MartinZikmund 似乎将位置设置为
landOn实际上并未更新位置。 -
第一个
Log是否输出landOn位置? -
@MartinZikmund 实际上我打印了
landOn。我编辑了帖子。 -
动画是否也在修改位置?如果动画实际上还没有完全完成,它可能不会让你更新它