1旋转限制
上文实现的代码,我们的人物可以后空翻和前空翻,这不是我们想要的,所以我们需要对视角进行限定。
先分析一下,人物抬头不能让他超过某个角度,也就是抬头的时候我们人物的z轴和世界的y轴的夹角不能小于15度(我自己定义的),左右因为是沿着世界的y轴旋转所以不会有问题。下面看代码实现。
//自身坐标的z轴与世界的y轴要小于某个角度,负方向也是如此
if (Vector3.Angle(this.transform.forward, Vector3.up)<=15&& MouseY>0 ) {
MouseY = 0;
}
if (Vector3.Angle(this.transform.forward, -Vector3.up) <= 15 && MouseY < 0 )
{
MouseY = 0;
}
this.transform.Rotate(-MouseY * rotateSpeed * Time.deltaTime, 0, 0);
其中Mousey是鼠标上下移动的input,使用Vector3.Angle(自身z轴向量,世界y轴向量)得到两个向量的夹角,当夹角小于15度的时候,我们将它移动的input设置为0.反方向的话用-y和自身z轴的夹角去判断。
2人物跳跃()
人物跳跃物品们可以直接修改物体的position但是效果假,也可以加lerp去模拟弹跳曲线实现,但是有点麻烦,可以直接给物体添加一个向上的力,来模拟人物跳跃。下面看代码
private void JumpAndSquat() {
//判断物体在y轴方向的移动速度
IsJump = this.GetComponent<Rigidbody>