自动使第一人称控制器向前运行
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+。
【讨论】:
以上是关于自动使第一人称控制器向前运行的主要内容,如果未能解决你的问题,请参考以下文章
使用vue学习three.js之移动相机-使用第一人称控件FirstPersonControls控制相机
游戏开发实战Unity手游第一人称视角,双摇杆控制,FPS射击游戏Demo(教程 | 含Demo工程源码)