今天,又是充满希望的一天!

UnitySir - 00006_修复奔跑问题

Posted on By Zj

需要实现功能

修复角色斜方行走时播放奔跑动画问题

修复角色斜方奔跑时速度加快问题


知识点

椭圆映射

//注意: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;
    }
}

参考链接

解决unity中角色斜向走路/跑变快的问题

unity椭圆映射,解决斜角移动,1.414(根号2)问题


如果内容对你有所帮助:

UnitySir (bilibili)

B站ID:UnitySir