【问题标题】:Mathf.Clamp is messing with my camera movement scriptMathf.Clamp 弄乱了我的相机移动脚本
【发布时间】:2021-10-24 23:34:14
【问题描述】:

我正在制作一个游戏,它使用 WASD 键在不同对象之间移动相机,并使用 Mathf.Clamp 来限制它,但现在它可以做到,所以移动不起作用,我只移动不应该的对角线无需多次按键即可。

{
    public Vector3 startPos;
    public float moveDistance = 1;
    public float minX;
    public float minZ;
    public float maxX;
    public float maxZ;
    void Start()
    {
        transform.position = startPos;
    }

    // Update is called once per frame
    void Update()
    {
        if (Input.GetKeyDown(KeyCode.W)) 
        {
            transform.position += new Vector3(0, 0, moveDistance);
        }
        else if (Input.GetKeyDown(KeyCode.S))
        {
            transform.position += new Vector3(0, 0, -moveDistance);
        }
        else if (Input.GetKeyDown(KeyCode.D))
        {
            transform.position += new Vector3(moveDistance, 0, 0);
        }
        else if (Input.GetKeyDown(KeyCode.A))
        {
            transform.position += new Vector3(-moveDistance, 0, 0);
        }

        transform.position = new Vector3(Mathf.Clamp(transform.position.x, minX, maxX), transform.position.y, Mathf.Clamp(transform.position.x, minZ, maxZ));
    }
}

【问题讨论】:

  • 看起来像是一个错字,你的意思是 Mathf.Clamp(transform.position.z, minZ, maxZ) 而不是 Mathf.Clamp(transform.position.x, minZ, maxZ)

标签: c# unity3d clamp


【解决方案1】:

看起来 Ruzihm 已经回答了你的问题。

我最近在使用负数的 Mathf.Clamp 时遇到了一些问题。 所以我想分享解决方案。 不记得我在哪里找到的,很抱歉,我不能相信制作它的人。

    public  float ClampAngle(float angle, float minAngle, float maxAngle)
{
    if (angle < 90 || angle > 270)
    {       // if angle in the critic region...
        if (angle > 180) angle -= 360;  // convert all angles to -180..+180
        if (maxAngle > 180) maxAngle -= 360;
        if (minAngle > 180) minAngle -= 360;
    }
    angle = Mathf.Clamp(angle, minAngle, maxAngle);
    if (angle < 0) angle += 360;  // if angle negative, convert to 0..360
    return angle;
}

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2011-03-17
    • 1970-01-01
    • 1970-01-01
    • 2014-11-19
    • 1970-01-01
    • 1970-01-01
    • 2015-04-19
    相关资源
    最近更新 更多