低音炮可怕男子

  博客园  :: 首页  :: 新随笔  :: 联系 :: 订阅 订阅  :: 管理
 1 /*
 2 这是一个第一人称移动脚本
 3 */
 4 using UnityEngine;
 5 using System.Collections;
 6 using System;
 7 
 8 public class Player : MonoBehaviour {
 9     //位置记录
10     public Transform m_transform;
11    
12     //角色控制器组件
13     CharacterController m_ch;
14     //角色移动速度
15     public float m_movSpeed = 3.0f;
16     //重力
17     float m_gravity = 2.0f;
18     //生命值
19     public int m_life = 5;
20 
21     //摄像机位置控制
22     public Transform m_camTransform;
23     //摄像机旋转角度
24     Vector3 m_camRot;
25     //摄像机高度
26     public float m_camHeight = 1.4f;
27 
28     void Start()
29     {
30         m_transform = this.transform;
31         //获取角色控制器
32         m_ch = this.GetComponent<CharacterController>();
33 
34         //初始化摄像机
35         //获取摄像机
36         m_camTransform = Camera.main.transform;
37         //设置摄像机初始位置
38         Vector3 pos = m_transform.position;
39         pos.y += m_camHeight;
40         m_camTransform.position = pos;
41         //摄像机的旋转方向与主 角方向一样
42         m_camTransform.rotation = m_transform.rotation;
43         m_camRot = m_camTransform.eulerAngles;
44         //锁定鼠标
45         Screen.lockCursor = true;
46     }
47     void Update()
48     {
49         if (m_life <= 0)
50             return;
51         Control();
52         }
53 
54      void Control()
55     {
56         //三个值控制移动
57         float ym = 0, xm = 0, zm = 0;
58         //重力运动
59         ym -= Time.deltaTime * m_gravity;
60         //控制移动
61         //向前移动
62         if (Input.GetKey(KeyCode.W))
63         { zm += Time.deltaTime * m_movSpeed; }
64         //向后
65         else if (Input.GetKey(KeyCode.S))
66         { zm -= Time.deltaTime * m_movSpeed; }
67 
68         //向左
69         if (Input.GetKey(KeyCode.A))
70         { xm -= Time.deltaTime * m_movSpeed; }
71         else if (Input.GetKey(KeyCode.D))
72         { xm += Time.deltaTime * m_movSpeed; }
73         //使用CharacterControl的Move函数进行移动,它会自动检测碰撞
74         m_ch.Move(m_transform.TransformDirection(new Vector3(xm, ym, zm)));
75 
76 
77         //获取鼠标移动距离
78         float rh = Input.GetAxis("Mouse X");
79         float rv = Input.GetAxis("Mouse Y");
80 
81         //旋转摄像机
82         m_camRot.x -= rv;
83         m_camRot.y += rh;
84         m_camTransform.eulerAngles = m_camRot;
85 
86         //主角面向方向与摄像机一致
87         Vector3 camrot = m_camTransform.eulerAngles;
88         camrot.x = 0;
89         camrot.z = 0;
90         m_transform.eulerAngles = camrot;
91 
92         //使摄像机位置与主角一样
93         Vector3 pos = m_transform.position;
94         pos.y += m_camHeight;
95         m_camTransform.position = pos;
96     }
97 }

 

posted on 2015-08-06 16:58  低音炮可怕男子  阅读(149)  评论(0编辑  收藏  举报