Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/unity3d/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Unity3d 使用第一人称控制器脚本在硬纸板中前进_Unity3d_Google Cardboard - Fatal编程技术网

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

Unity3d 使用第一人称控制器脚本在硬纸板中前进,unity3d,google-cardboard,Unity3d,Google Cardboard,如何在谷歌硬纸板中添加第一人称角色控制器,使其连续向前移动? 我知道这是一个愚蠢的问题,但因为我是新手,几个小时前才做了一个简单的纸板游戏。我不知道如何将第一人称控制器脚本添加到我的谷歌卡板游戏中?这里有一个来自github的AutoWalk.cs脚本,我个人用它来让我的角色行走。该脚本通过简单的头部倾斜或磁铁触发器使相机(和绑定的角色)向前移动。 注意:github中的代码是针对GoogleCardbard SDK的。所以你会有 如果要使其与 最新的Google VR SDK(几乎没有变量名

如何在谷歌硬纸板中添加第一人称角色控制器,使其连续向前移动?
我知道这是一个愚蠢的问题,但因为我是新手,几个小时前才做了一个简单的纸板游戏。我不知道如何将第一人称控制器脚本添加到我的谷歌卡板游戏中?

这里有一个来自github的AutoWalk.cs脚本,我个人用它来让我的角色行走。该脚本通过简单的头部倾斜或磁铁触发器使相机(和绑定的角色)向前移动。

注意:github中的代码是针对GoogleCardbard SDK的。所以你会有 如果要使其与 最新的Google VR SDK(几乎没有变量名更改)


然而,这是一个临时修复,我建议在我们等待谷歌发布DayDream时,实际上你只需在场景中插入GvrViewerMain.prefact,这个prefact会在立体渲染中更改你的所有相机,你只需在他体内放置你的FPSController并修改脚本FirsPersonController.cs中的101行

换行

Vector3 desiredMove = transform.forward*m_Input.y + transform.right*m_Input.x;//MODIFIED TO WALK FOR EVER
您只需将m_Input.y替换为Time.deltaTime,如下所示

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);
    }
}
使用UnityEngine;
使用系统集合;
公共阶级运动:单一行为{
公共浮子速度=6.0F;
公共浮子跳跃速度=8.0F;
公共浮子重力=20.0F;
专用矢量3移动方向=矢量3.0;
无效更新(){
CharacterController=GetComponent();
if(controller.isground){
moveDirection=transform.TransformDirection(Vector3.forward);
移动方向*=速度;
if(Input.GetButton(“跳转”))
移动方向。y=跳跃速度;
}
moveDirection.y-=重力*时间增量;
控制器移动(移动方向*时间增量);
}
}

如何检测与某些对象的碰撞?您应该将其作为问题而不是评论。在游戏对象的检查器面板中,在该对象(立方体、球体或胶囊)上添加“碰撞器”组件。将其isTrigger属性设置为true。当任何对象接触时,有两个函数称为OnTiggerEnter和OnCollision。选择适合你的功能。太棒了!谢谢,我一直在寻找这个真的很糟糕!