使用unity3d搭建简单的场景以及第一人称角色的控制
2017-07-07 15:49
351 查看
一、搭建简单的游戏场景
1、打开unity3d编辑器,新建一个空工程。2、创建若干个cube对象,通过伸缩变换形成地板,墙壁以及障碍物等。
3、创建平行灯,照亮场景
4、创建一个胶囊对象,作为角色
5、在胶囊对象上添加摄像机,作为角色的眼睛,摄像机的摄像范围极为角色的视野。
创建好的场景图如下:
二、通过鼠标的移动控制角色的视野
新建脚本MouseLook.cs,编辑控制代码,并将脚本组件添加到角色对象上。代码如下:using System.Collections; using System.Collections.Generic; using UnityEngine; public class MouseLook : MonoBehaviour { public enum RotationAxes { MouseXAndY = 0, MouseX = 1, MouseY = 2 } public RotationAxes axes = RotationAxes.MouseXAndY; public float sensitivityHor = 9.0f; public float sensitivityVert = 9.0f; public float minimumVert = -15.0f; public float maximumVert = 45.0f; private float _rotationX = 0; // Use this for initialization void Start () { Rigidbody body = GetComponent<Rigidbody>(); if(body != null) { body.freezeRotation = true; } } // Update is called once per frame void Update () { if(axes == RotationAxes.MouseX) { //horizontal rotation here transform.Rotate(0, Input.GetAxis("Mouse X") * sensitivityHor, 0); } else if(axes == RotationAxes.MouseY) { //vertical rotation here _rotationX -= Input.GetAxis("Mouse Y") * sensitivityVert; _rotationX = Mathf.Clamp(_rotationX, minimumVert, maximumVert); float rotationY = transform.localEulerAngles.y; transform.localEulerAngles = new Vector3(_rotationX, rotationY, 0); } else { //both horizontal and vertical rotation here _rotationX -= Input.GetAxis("Mouse Y") * sensitivityVert; _rotationX = Mathf.Clamp(_rotationX, minimumVert, maximumVert); float delta = Input.GetAxis("Mouse X") * sensitivityHor; float rotationY = transform.localEulerAngles.y + delta; transform.localEulerAngles = new Vector3(_rotationX, rotationY, 0); } } }
三、通过键盘控制角色移动
新建脚本KeyboardMove.cs,编辑代码,并将该脚本组件添加到角色对象中。代码如下:using System.Collections; using System.Collections.Generic; using UnityEngine; [RequireComponent(typeof(CharacterController))] [AddComponentMenu("Control Script/FPS Input")] public class KeyboardMove : MonoBehaviour { public float speed = 6.0f; public float gravity = 0; private CharacterController _charController; //用于引用CharacterController的变量 // Use this for initialization void Start () { _charController = GetComponent<CharacterController>(); //使用附加到相同对象上的其他组件 } // Update is called once per frame void Update () { float deltaX = Input.GetAxis("Horizontal") * speed; float deltaZ = Input.GetAxis("Vertical") * speed; Vector3 movement = new Vector3(deltaX, 0, deltaZ); movement = Vector3.ClampMagnitude(movement, speed); //将对角移动的速度限制为和沿着轴移动的速度一样 movement.y = gravity; movement *= Time.deltaTime; movement = transform.TransformDirection(movement); //把movement向量从本地变换为全局坐标 _charController.Move(movement); //告知CharacterController通过movement向量移动 } }
相关文章推荐
- Unity3D场景搭建2. 使用组件(Using Components)
- 用Unity开发OculusRift体验演示教程(一)——搭建简单场景并使用Oculus提供的SDK包
- Block从简单到高级的使用,以及项目中经常使用的场景
- 学习淘淘商城第十九课(搭建单机版FastDFS图片服务器以及使用FastDFS-Client客户端进行简单测试)
- 利用unity3d自带的CharacterController包制作第一人称控制模型的简单Demo
- Unity3D游戏制作-3D横版场景的角色移动控制
- Jquery EasyUI环境搭建以及简单使用
- 【Unity3D实战】RPG黑暗之光Scene3:创建游戏运行场景及角色控制
- unity3d easytouch计算摇杆旋转角度以及摇杆八方向控制角色
- 使用angular 实现简单 用户-角色-菜单-按钮权限控制
- cocos2d-x 2.2 CocoStudio动画和界面编辑器按钮控制以及场景编辑器使用
- 利用unity3d自带的CharacterController包制作第一人称控制模型的简单Demo
- unity3d easytouch计算摇杆旋转角度以及摇杆八方向控制角色
- Unity3D之第一人称第三人称角色控制组件修改C#版本
- unity3d easytouch计算摇杆旋转角度以及摇杆八方向控制角色
- Unity3D游戏制作(一)——3D横版场景的角色移动控制
- Unity3D第一人称第三人称角色控制组件修改C#版
- 4、对正投影相机以及透视相机的使用,以及对场景通过鼠标控制大小以及旋转
- Google Espresso 环境搭建以及简单使用教程
- Redis环境搭建以及简单使用