自动使第一人称控制器向前运行

Posted

技术标签:

【中文标题】自动使第一人称控制器向前运行【英文标题】:Automatically make First Person Controller run forward 【发布时间】:2014-11-25 15:52:20 【问题描述】:

我正在 Unity 中为 Google Cardboard 制作游戏,我正在使用 Unity 中的第一人称控制器对象。它可以很好地使用箭头键,但我希望它始终自动向前运行,因为我没有在谷歌纸板上输入的方法。

我目前几乎没有使用统一的经验,但我知道这是我想做的。我应该修改附加到对象的脚本吗?

谢谢

【问题讨论】:

我几乎什么都没尝试,我尝试通读脚本并了解它是如何工作的,但我无法弄清楚实际输入的来源。好像我需要永久按下“向上”键。 您要查找的文件是 FPSInputController.js。搜索 Input.GetAxis("Vertical")。将其替换为 1. 谢谢,正是我想要的 【参考方案1】:

这是我在Magnet script for UNITY 3D也使用过的答案的副本

唯一的区别是您可以将“IsMoving”替换为“true”,因为您希望您的人始终向前迈进。我在这里做了替换,只是去掉了我其他答案上的 if 块:

    在 Unity5 中导入资产包 Standard Assets/Characters。 从该包创建 RigidBodyFPSController.prefab 的实例。 删除它的子对象“MainCamera” 导入Google cardboard unitypackage。 将您在第 3 步中移除的“MainCamera”替换为 CardboardMain.prefab 更新或修改 RigidbodyFirstPersonController.cs GetInput() 方法的副本。

GetInput() 与 Google Cardboard 向前移动后备:

private Vector2 GetInput()

    Vector2 input = new Vector2
    
        x = Input.GetAxis("Horizontal"),
        y = Input.GetAxis("Vertical")
    ;

    // If GetAxis are empty, try alternate input methods.
    if (Math.Abs(input.x) + Math.Abs(input.y) < 2 * float.Epsilon)
    
        input = new Vector2(0, 1); // go straight forward by setting positive Vertical
    
    movementSettings.UpdateDesiredTargetSpeed(input);
    return input;

Google 的 SDK 仅支持检测磁铁“点击”。如果你想按住磁铁向前移动,我推荐使用 Unity3D Asset Store 中的Cardboard Controls+。

【讨论】:

以上是关于自动使第一人称控制器向前运行的主要内容,如果未能解决你的问题,请参考以下文章

Unity使用官方第一人称控制器(第三人称参考)

使用vue学习three.js之移动相机-使用第一人称控件FirstPersonControls控制相机

怎样用鼠标控制摄像机的移动旋转

游戏开发实战Unity手游第一人称视角,双摇杆控制,FPS射击游戏Demo(教程 | 含Demo工程源码)

游戏开发实战Unity手游第一人称视角,双摇杆控制,FPS射击游戏Demo(教程 | 含Demo工程源码)

unity第一人称控制器怎么使用鼠标点击