Unity3D实现键盘鼠标控制角色移动及旋转
发布网友
发布时间:2023-10-11 07:14
我来回答
共1个回答
热心网友
时间:2024-03-22 00:12
Unity3D实现键盘鼠标控制角色前后左右移动及旋转
打开Unity3D,新建项目,如图,项目名称先填写为“PlayerControl”,然后点“CreateProject”按钮。
在项目(Project)面板中的Assets下面分别建立“Materials"、"Prefabs"和"Scripts”文件夹。
在层级(Hierarchy)面板中,点鼠标右键,在弹出菜单中选“3D Object”--"Plane"(地面),然后点检视(Inspector)面板中的Transform组件设置按钮,在弹出的菜单中选“Reset”,将添加的地面复位。可以看到在Inspector面板中的Transform组件里,Position(位置)属性X,Y,Z都是0。 下面进行关键的一步,按住ATL键,鼠标移到"Scene"面板中(这时鼠标变成眼睛形状),拖动鼠标,可以移动场景中的视角,注意:一定要将视角移动成如图所示的X轴在右方,Z轴在前方,Y轴在上方。这步很关键,移成这样的方位,后面移动物体时,前后左右才会正常,不然你的方向可能会和别人相反。
调整好Scene面板中的视角后,选中层级(Hierarchy)面板中的"Main Camera",点菜单"GameObject"--"Align With View",将主摄像机位置调整到Scene面板中所看到的视角。
与上一步相同,在层级(Hierarchy)面板中,点鼠标右键,在弹出菜单中选“3D Object”--"Cube"(立方体),然后点检视(Inspector)面板中的Transform组件设置按钮,在弹出的菜单中选“Reset”,然后将Transform组件里,Position(位置)的Y值改成0.5,X和Z均为0。
选中Project(项目)面板中的Assets下的"Materials"文件夹,在右边空白处,右击鼠标,选"Create"--"Material",将新建的材质球默认名称"New Material"改名为"Cube",并在右边"Inspector"(检视)面板中,设置颜色为蓝色。将材质球"Cube"拖到Scene面板中的立方体"Cube"上面,这时,场景中的立体方Cube变成蓝色,如图所示。
方法/步骤2
点击项目(Project)面板中的"Prefabs"文件夹,将层级(Hierarchy)面板中的Cube立方体,拖动到项目(Project)面板中的"Prefabs"文件夹中,这时Cube立方体则变成了预制体。
点击项目(Project)面板中的"Script"文件夹,在右边空白处点鼠标右键,选"Create"--"C# Script",将新创建的C#代码重命名为"PlayerController",并将该代码拖拽到层级(Hierarchy)面板中的Cube物体上。然后双击打开该代码。
在代码编辑器MomoDevelop或VS2015中,将以下代码输入,然后按CTRL+S保存代码。 using System.Collections; using System.Collections.Generic; using UnityEngine; public class PlayerController : MonoBehaviour { private Transform m_Transform; void Start () { m_Transform = gameObject.GetComponentTransform(); } // Update is called once per frame void Update () { MoveControl(); } void MoveControl() { if (Input.GetKey(KeyCode.W)) { m_Transform.Translate(Vector3.forward * 0.1f, Space.Self); } if (Input.GetKey(KeyCode.S)) { m_Transform.Translate(Vector3.back * 0.1f, Space.Self); } if (Input.GetKey(KeyCode.A)) { m_Transform.Translate(Vector3.left * 0.1f, Space.Self); } if (Input.GetKey(KeyCode.D)) { m_Transform.Translate(Vector3.right * 0.1f, Space.Self); } if (Input.GetKey(KeyCode.Q)) { m_Transform.Rotate(Vector3.up, -1.0f); } if (Input.GetKey(KeyCode.E)) { m_Transform.Rotate(Vector3.up, 1.0f); } m_Transform.Rotate(Vector3.up, Input.GetAxis("Mouse X")); m_Transform.Rotate(Vector3.left, Input.GetAxis("Mouse Y")); } }
回到Unity3D,点击"运行"按钮,发现原来的Scene面板会切换到Game(游戏预览)面板。这时,就可以通过WSAD键控制立方体的前后左右移动,Q和E键控制立方体左右旋转。同时,鼠标前后和左右移动可以控制物体上下及左右旋转了。
测试完成后,发现物体移出地面后竟然会悬在空中不会下落,这时,可以点击“运行”按钮,选中Cube立方体,点菜单“Component"--"Physics"--"Rigidbody",可以在检视(Inspector)面板中看到该立方体多了一个“刚体(Rigidbody)组件,因为默认的"Use Gravity"(启用重力)有打上勾。所以,再次运行,可以看到立方体移出地面(Plane)范围后会下落。