学习unity3d的第一天
建立一个由键盘控制走路,鼠标控制方向的对象
构成对象:地形(Terrain)、player(创立的对象)、Sphere(在对象创立的对象)、Camera(跟随在Sphere的摄像机)
键盘控制走路的代码:
public class playmove : MonoBehaviour
{
public float speed;
public CharacterController playercontroller;//角色控制器
void Update()
{
float x, z;
x = Input.GetAxis("Horizontal");//水平
z = Input.GetAxis("Vertical");//垂直
Vector3 move;
move = transform.right * x + transform.forward * z;//控制按键操控的方向变换
playercontroller.Move(move * speed * Time.deltaTime);//设置时间
}
}
解析:
1、添加角色控制器
在Player上添加CharacterController组件
2、移动方法
这种方法一般用于3D游戏Player进行移动
Input.GetAxix()得到游戏轴上的输入
"Horizontal"水平轴
"Vertical"垂直轴
检测x、z轴的按键输入输入
move = transform.right * x + transform.forward * z
相当于
move=(0,0,0)
transform.right * x=(x,0,0)
transform.forward * z=(0,0,z)
最后得到一个三维move的位置
playercontroller.Move(move * speed * Time.deltaTime);
Move()方法是角色控制器的函数,用于移动
move作为一个三维数据是一个参数。
鼠标控制方向的代码:
public class Cameralook : MonoBehaviour
{
public float mousespeed;//鼠标速度
public Transform player;//方向
private float xmove;
void Start()
{
Cursor.lockState = CursorLockMode.Locked;//控制鼠标无限向上移动
}
void Update()
{
float x, y;
x = Input.GetAxis("Mouse X")*mousespeed*Time.deltaTime;//物体整体运动
y = Input.GetAxis("Mouse Y")*mousespeed * Time.deltaTime;//摄像机上下运动
xmove = xmove - y;
xmove = Mathf.Clamp(xmove, -90, 90);
this.transform.localRotation = Quaternion.Euler(xmove, 0, 0);//确定旋转的角度
player.Rotate(Vector3.up * x);
}
}
代码解析:
1、 Cursor.lockState = CursorLockMode.Locked;
确定硬件指针是否锁定到视图的中心、受限于窗口或者根本不受限制。
锁定时,光标位于视图的中心且无法移动。无论 Cursor.visible 的值如何,光标在此状态下均不可见。
对鼠标进行控制
CursorLockMode.None:鼠标光标不被锁定,可以在屏幕范围内自由移动。
CursorLockMode.Confined:鼠标光标被限制在游戏窗口内,无法离开窗口边界。
CursorLockMode.Locked:鼠标光标被完全隐藏并锁定在中心位置,通常用于第一人称或第三人称视角的游戏,以便玩家可以通过鼠标平滑地旋转摄像机或控制角色视角。
2、同样使用Input.GetAxis()方法进行接受输入
Mouse X 鼠标X轴移动
Mouse Y 鼠标y轴移动
Mathf.Clamp()用于现在x轴移动在-90至90角度之间。
然后得到旋转的角度,通过Rotate()方法进行移动。