需要实现功能
修复角色斜方行走时播放奔跑动画问题
修复角色斜方奔跑时速度加快问题
知识点
椭圆映射
//注意:v为vertical h为horizontal
//将以前坐标x,z进行公式计算 output出新的坐标
Vector3 output = Vector3.zero;
output.x = h* Mathf.Sqrt(1 - (v * v) / 2.0f);
output.z = v * Mathf.Sqrt(1 - (h * h) / 2.0f);
this.playerRigdbody.velocity = new Vector3(output.x, this.playerRigdbody.velocity.y, output.z) * this.runSpeed * Time.deltaTime;
这里使用是Vector3
水平轴为X
垂直轴为Z
,如果要使用 Vector2
水平轴为X
垂直轴为Y
完整代码
public class SimpleTools
{
public static Vector3 Vec3Rect2Round(Vector3 input)
{
Vector3 output = Vector3.zero;
output.x = input.x * Mathf.Sqrt(1 - (input.z * input.z) / 2.0f);
output.z = input.z * Mathf.Sqrt(1 - (input.x * input.x) / 2.0f);
return output;
}
public static Vector2 Vec2Rect2Round(Vector2 input)
{
Vector3 output = Vector3.zero;
output.x = input.x * Mathf.Sqrt(1 - (input.y * input.y) / 2.0f);
output.y = input.y * Mathf.Sqrt(1 - (input.x * input.x) / 2.0f);
return output;
}
}