一。新建关卡
File,Save Scene,
File,New Scene,
File,Save Scene as... ,Level02.unity
1.建立场景
从Assets中拖放场景模型到Hierarchy中,
2.为游戏体添加多边形碰撞体
在Hierarchy中选择3个构造游戏空间的游戏体,
Component,Physics,Mesh Collider,
操作后,游戏空间游戏体可以用于物理碰撞检测。
3.创建灯光
现在游戏空间内光线不好,调整一下,
1)创建电光源
根据需求,创建若干。可使用Ctrl + D 快速复制,
2)调整亮度
二。创建玩家
1.创建空对象
GameObject,Create Empty,
在Hierarchy中将之命名为FPSPlayer,
2.设置标签
选择FPSPlayer,Inspector,Tag,修改为“Player”,
3.添加角色控制器
FPSPlayer仍旧被选中,
Component,Physics,Character Controller,
执行这一步后,玩家在场景中移动时,会和其它游戏体发生物理交互。
4.添加刚体属性
仍旧选中玩家,
Component,Physics,Rigidbody,
5.控制脚本
首先,创建FPSPlayer.cs脚本,
using UnityEngine; using System.Collections; [AddComponentMenu("MyGame/FPSPlayer")] public class FPSPlayer : MonoBehaviour { private CharacterController m_ch; // 玩家角色控制器 public Transform m_transform; // 玩家实例 private float m_movSpeed = 3.0f; // 玩家移动基速 public int m_life = 5; // 生命值 private float m_gravity = 2.0f; // 重力 private Transform m_camTransform; // 摄像机 private Vector3 m_camRot; // 摄像机姿势-旋转角度 private float m_camHeight = 4.5f; // 摄像机高度-玩家的眼睛 void Start() { m_transform = this.transform; // 本角色实例 m_ch = this.GetComponent<CharacterController>(); // 本角色的控制器 m_camTransform = Camera.main.transform;// 获取摄像机 /** 设置摄像机初始位置 **/ Vector3 pos = m_transform.position; // 玩家位置 pos.y += m_camHeight; // 镜头高度 m_camTransform.position = pos; // 初始化初始摄像机位置 m_camTransform.rotation = m_transform.rotation; // 初始化摄像机姿势 /** * eulerAngles的三个变量 z,x,y 表示三个绕坐标轴旋转的角度(世界坐标轴) * 顺序是z,x,y。如果角度超过360的话,要用Rotate来代替,用四元数来旋转 * 这三个x,y,z的值对应Inspector上的transform/Rotation的三个值 * 所绕角度是顺着坐标轴看,按逆时针旋转的角度 **/ m_camRot = m_camTransform.eulerAngles; // 存储摄像机姿势 Screen.lockCursor = true; // 锁定鼠标 } void Update() { if (m_life <= 0) return; // 如果生命为0,什么也不做 /** * Input.GetAxis(string name); * 根据坐标轴名称返回虚拟坐标系中的值。返回值类型:float * 参数:Horizontal, Vertial, Mouse X, Mouse Y * 其中Horizontal, Vertical 默认对应小键盘上的左右、上下键,返回值为-1或1 * Mouse X, Mouse Y 对应鼠标位置,返回值不定 * 以上都是在unity3d中预定义好的映射,可以通过 Edit->Project Settings->Input 来重新定义映射 **/ float rv = Input.GetAxis("Mouse Y"); // 鼠标 Y 轴移动距离,抬头角度 float rh = Input.GetAxis("Mouse X"); // 鼠标 X 轴移动距离,转身角度 m_camRot.x -= rv; // X轴 摄像机仰角-抬头 m_camRot.y += rh; // Y轴 摄像机旋转 m_camTransform.eulerAngles = m_camRot; // 摄像机姿势修正 // 使主角的面向方向与摄像机一致 Vector3 camrot = m_camTransform.eulerAngles; // 提取摄像机姿势 camrot.x = 0; camrot.z = 0; // 防止后退 m_transform.eulerAngles = camrot; // 玩家姿势修正 float xm = 0, ym = 0, zm = 0; // 重力运动 ym -= m_gravity * Time.deltaTime * 10; // 前进/后退 if (Input.GetKey(KeyCode.W)) zm += m_movSpeed * Time.deltaTime * 3; else if (Input.GetKey(KeyCode.S)) zm -= m_movSpeed * Time.deltaTime * 3; // 左移/右移 if (Input.GetKey(KeyCode.A)) xm -= m_movSpeed * Time.deltaTime * 3; else if (Input.GetKey(KeyCode.D)) xm += m_movSpeed * Time.deltaTime * 3; // 移动 m_ch.Move(m_transform.TransformDirection(new Vector3(xm, ym, zm))); // 使摄像机的位置与主角一致 Vector3 pos = m_transform.position; pos.y += m_camHeight; m_camTransform.position = pos; } void OnDrawGizmos() { Gizmos.DrawIcon(transform.position, "pfsPlayer.png", true); } }然后,关联到玩家游戏体,

6.创建武器
1)设置主相机
可选操作,
2)创建武器游戏体
将已经做好的武器prefab文件加入场景,