移动播放器,然后更改场景

时间:2015-05-21 07:59:28

标签: c# unity3d move scene

我有问题。 我希望如果玩家点击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 个答案:

答案 0 :(得分:1)

物体确实向门移动,你只是看不到它,因为你在同一帧中加载了新的等级。会发生什么:

  1. 新框架启动
  2. 投射光线并点击
  3. 您指定目标位置
  4. 您将变换位置更改为目标位置
  5. 级别开始加载
  6. 新框架启动
  7. 你想做什么:

    1. 新框架启动
    2. 投射光线
    3. 您指定目标位置
    4. 您将变换位置更改为目标位置
    5. 新框架启动
    6. 你重复步骤4.直到物体到达目标位置(这持续很多帧)
    7. 当对象到达目标位置时,加载新级别
    8. 要实现这一点,你应该设置一个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
              }
          }
      }