使用第一人称控制器脚本在纸板中前进

时间:2016-05-26 10:57:03

标签: unity3d google-cardboard

如何在谷歌纸板中添加第一人称角色控制器,使其在连续方向上向前移动? 我知道这是一个愚蠢的问题,但因为我是新的,实际上几个小时前制作了一个简单的纸板游戏。我没有得到如何在我的谷歌卡棋盘游戏中添加第一人称控制器脚本?

2 个答案:

答案 0 :(得分:4)

这是来自github的 AutoWalk.cs 脚本,我个人用它来让我的角色走路。此脚本使相机(和绑定字符)向前移动,具有简单的头部倾斜或磁铁触发器。 https://github.com/JuppOtto/Google-Cardboard/blob/master/Autowalk.cs

  

注意:github中的代码适用于Google Cardboard SDK。所以你会有   如果你想让它兼容,可以稍微修改一下   最新的Google VR SDK(少量变量名称更改)。

然而,这是我推荐的临时解决方案,因为我们等待Google发布DayDream

答案 1 :(得分:1)

实际上你只是在场景中插入GvrViewerMain.prefab,这个预制版改变了立体渲染中的所有摄影机,你只需要把你的FPSController和修改101行放在他脚本中的脚本FirsPersonController.cs中。

更改此行

Vector3 desiredMove = transform.forward*m_Input.y + transform.right*m_Input.x;//MODIFIED TO WALK FOR EVER

你只需要用Time.deltaTime替换m_Input.y,就像这样。

Vector3 desiredMove = transform.forward*Time.deltaTime + transform.right*m_Input.x;//MODIFIED TO WALK FOR EVER

更清洁的解决方案:

在场景中添加一个摄像头,添加一个characterController组件。 在相机内添加新脚本:

using UnityEngine;
using System.Collections;

public class movement : MonoBehaviour {

    public float speed = 6.0F;
    public float jumpSpeed = 8.0F;
    public float gravity = 20.0F;
    private Vector3 moveDirection = Vector3.zero;
    void Update() {
        CharacterController controller = GetComponent<CharacterController>();
        if (controller.isGrounded) {
            moveDirection = transform.TransformDirection(Vector3.forward);
            moveDirection *= speed;
            if (Input.GetButton("Jump"))
                moveDirection.y = jumpSpeed;

        }
        moveDirection.y -= gravity * Time.deltaTime;
        controller.Move(moveDirection * Time.deltaTime);
    }
}