我有一个问题。 我希望如果玩家点击 StudyOutDoor,首先对象向门 move ,然后在 Unity 中改变场景。 这是我的代码:
if (Physics.Raycast (clickPoint, out hitPoint)) {
if (hitPoint.collider.name == "StudyOutDoor") {
target.y = transform.position.y;
target.z = transform.position.z;
transform.position = Vector3.MoveTowards (transform.position, target, playerSpeed * Time.deltaTime);
sceneNumber = 3;
Application.LoadLevel("Corridor");
}
但它只是换了个场景,并没有走向我说的那个位置。 请帮忙。
最佳答案
对象确实向门 move ,只是您看不到它,因为您在同一帧中加载了新关卡。详细情况:
- 新框架开始
- 射线转换并命中
- 您分配目标位置
- 你改变变换位置到目标位置
- 关卡开始加载
- 新框架开始
你想做什么:
- 新框架开始
- 转换光线
- 您分配目标位置
- 你改变变换位置到目标位置
- 新框架开始
- 重复第 4 步,直到对象到达目标位置(这会持续很多帧)
- 当物体到达目标位置时,加载新关卡
要实现这一点,您应该设置一个 bool 标志,仅当光线被击中时才 move 对象
伪代码:
update()
{
if( ray cast hit )
{
calculate target position
set flag to true
}
if( flag )
{
move object to target position
if( object reached target position )
{
load new level
}
}
}
关于c# - move 玩家然后改变场景,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30367855/