1.
摄像机成为胶囊的子物体,摄像机上放代码:
using UnityEngine;
using System.Collections;
public class Sj : MonoBehaviour {
public GameObject player; //前台拖入胶囊
Vector3 rot = new Vector3(0, 0, 0); //先定义一个Vectory3类型的变量rot(0,0,0)
public float speed; //这个是鼠标灵敏度
void Start() {
}
void Update() {
float MouseX = Input.GetAxis("Mouse X")*speed;
float MouseY = Input.GetAxis("Mouse Y")*speed;
rot.x = rot.x - MouseY;
rot.y = rot.y + MouseX;
rot.z = 0; //锁定摄像头移动的角度z轴,防止左右倾斜
transform.eulerAngles = rot; //所有方向设定好后,摄像头的角度=rot
player.transform.eulerAngles = new Vector3(0, rot.y, 0); //角色角度只能通过MouseX改变大小,也就是锁定rot.y
}
}
场景加上碰撞器
Player胶囊身上加上如下代码:
using UnityEngine;
using System.Collections;
public class PlayerMove : MonoBehaviour {
public float speed;
// Use this for initialization
void Start() {
}
// Update is called once per frame
void Update() {
float MoveX = Input.GetAxis("Horizontal");
float MoveY = Input.GetAxis("Vertical");
transform.Translate(new Vector3(MoveX, 0, MoveY) *
Time.deltaTime * speed);
if (Input.GetButtonDown("Jump")) {
Rigidbody rig = GetComponent();
rig.AddForce(new Vector3(0, 0.5f, 0), ForceMode.Impulse);
}
}
}
这是用刚体做的
就可以移动了
2.给胶囊加上角色控制器
去掉胶囊控制器
代码:
using UnityEngine;
using System.Collections;
public class ExampleClass : MonoBehaviour {
public float speed = 6.0F;
public float jumpSpeed = 8.0F;
public float gravity = 20.0F;
private Vector3 moveDirection = Vector3.zero;
void Update() {
CharacterController controller = GetComponent();
if (controller.isGrounded) {
moveDirection = new Vector3(Input.GetAxis("Horizontal"), 0, Input.GetAxis("Vertical"));
moveDirection = transform.TransformDirection(moveDirection);
moveDirection *= speed;
if (Input.GetButton("Jump"))
moveDirection.y = jumpSpeed;
}
moveDirection.y -= gravity * Time.deltaTime;
controller.Move(moveDirection * Time.deltaTime);
}
}
3.Unity3d自己已经附带了一个第一人称视角,我们只需要动动手指,导包即可
然后我们新建一个文件夹,以存放我们的包
双击进入文件夹,然后右键点击文件夹内任意位置弹出卷展栏,然后点击:
Import Package -> Charactor Controllor
(即导入“角色控制包”)
紧接着弹出了一个窗口,我们新不管他里面有什么,先点击ALL(如何不点他的话,unity3d可能会自己报错),然后再点击Import导出包。
添加角色
稍等片刻,我们会发现文件夹下面出现了两个包,那就证明导入成功!
我们先不理Editor文件夹,进入Standard Assets->Character Controllers->First Person Controller (然后就看到这个:“First Person Controller”是一个胶囊,其实他就是第一人称视角控制器)
好的,我们直接把这个“First Person Controller”拖放到场景中,大功告成!(它的旁边还有一个叫“3rd Person Controller”,这是第三人称视角,也可以拖进去。)
注意事项:
第一人称视角与第三人称视角不可以同时出现在场景中!(否则会报错的!)
总结:1,2种方法,角色控制器是控制Player移动的,摄像机上的代码是弄第一人称视角的!摄像机放在Player的子物体
第三个方法,不用把摄像机放在Player的子物体上,前两种需要把摄像机成为Player的子物体。
补充:加上这个代码,鼠标运行时不可见
void Start() {
Cursor.visible = false;
}
加上这个代码,限制视角的上扬下俯
if (rot.x<=-70) {
transform.eulerAngles = new Vector3(-70, rot.y, 0);
}
if (rot.x >= 11) {
transform.eulerAngles = new Vector3(11, rot.y, 0);
}