移动玩家,然后改变场景

本文关键字:改变 然后 玩家 移动 | 更新日期: 2023-09-27 17:50:07

我有一个问题。我希望如果玩家点击StudyOutDoor,首先物体移动到门口,然后在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");
                    }

但它只是改变了场景,而没有移动到我说的位置。请帮助。

移动玩家,然后改变场景

对象确实向门移动,你只是看不到它,因为你在同一帧中加载了新的关卡。具体发生了什么:

  1. 新帧开始
  2. 光线投射并击中
  3. 你分配目标位置
  4. 向目标位置改变变换位置
  5. 关卡开始加载
  6. 新帧开始

你想做什么:

  1. 新帧开始
  2. 光线投射和
  3. 你分配目标位置
  4. 向目标位置改变变换位置
  5. 新帧开始
  6. 重复步骤4。直到物体到达目标位置(持续许多帧)
  7. 当对象到达目标位置时,加载新关卡
为了实现这一点,你应该设置一个bool标志,只在光线击中 时移动对象。

伪代码:

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
        }
    }
}