版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/wang_lvril/article/details/80626428
1.键盘控制角色前后左右移动
不转向,通过物体刚体组件物理特效Velocity控制,在FixedUpdate()函数里添加代码:
void FixedUpdate(){
float moveHorizontal=Input.GetAxis("Horizontal");//得到水平方向输入
float moveVertical=Input.GetAxis("Vertical");//得到垂直方向输入
Vector3 movement=new Vector3(moveHorizontal,0,moveVertical);
Rigidbody rb=GetComponent<Rigidbody>();
rb.velocity=movement*speed;
}
如果移动空间有范围限制,可在FixdUpdate()函数添加如下代码:
void FixedUpdate(){
......
float posX=Mathf.Clamp(rb.position.x,xMin,xMax);
float posY=Mathf.Clamp(rb.position,yMin,yMax);
rb.position=new Vector3(posX,0,posY);
}
Mathf.Clamp(float value,float min,float max)表示value固定在最小值min,和最大值max之间变动。
如果水平移动时,物体要倾斜,如飞机的移动,可在FixedUpdate()函数添加如下代码:
void FixedUpdate(){
......
float title=4.0f; //倾斜系数
rb.rotation=Quaternion.Euler(0,0,rb.velocity.*-tilt);
}
函数Euler的声明为:static Quaternion Euler(float x,float y,float z);接收绕X,Y,Z轴旋转角度值为参数。
水平移动,绕Z轴旋转,速度越大旋转角度越大,乘以负值旋转系数。
2.键盘控制前后移动,左右旋转
void FixedUpdate(){
float h=Input.GetAxis("Horizontal");
float v=Input.GetAxis("Vertical");
Rigidbody rb=GetComponent<Rigidbody>();
rb.velocity=transform.forward*v*speed;
rb.angularVelocity=transform.up*h*angularSpeed;
}