c# - move 玩家然后改变场景

标签 c# unity3d move scene

我有一个问题。 我希望如果玩家点击 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 ,只是您看不到它,因为您在同一帧中加载了新关卡。详细情况:

  1. 新框架开始
  2. 射线转换并命中
  3. 您分配目标位置
  4. 你改变变换位置到目标位置
  5. 关卡开始加载
  6. 新框架开始

你想做什么:

  1. 新框架开始
  2. 转换光线
  3. 您分配目标位置
  4. 你改变变换位置到目标位置
  5. 新框架开始
  6. 重复第 4 步,直到对象到达目标位置(这会持续很多帧)
  7. 当物体到达目标位置时,加载新关卡

要实现这一点,您应该设置一个 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/

相关文章:

javascript - 将 html 表中的输入文本动态传递给 Javascript 函数

c# - Silverlight Bing 通过 SSL 映射

android - 用户退出 Google Play 服务后保存游戏的最佳做法?

linux - Bash: move 文件/目录并创建它的链接

ios - 重新排序 UITableView 中的部分

c++ - 将字符 move 到字符串中会使迭代器无效吗?

c# - IEnumerable<T> 作为返回值,延迟执行和 N 层应用程序

c# - 在 WPF 应用程序中显示网页的某些部分的方法

c# - 将 xUnit 项目添加到 Unity 项目时,单元测试是不确定的

c# - Unity 2D脚本摩擦方程