如何限制Unity中的变换位置?

时间:2019-04-27 15:35:21

标签: c# unity3d

我正在寻找一种方法来限制对象的Y轴上的变换位置。要移动,我正在使用该代码

transform.position += Vector3.down * Time.deltaTime * speed;

仅当玩家按住按钮时对象才移动,此后对象将返回第一位置。如何阻止Y轴从6到-6的移动?

2 个答案:

答案 0 :(得分:2)

由于transform.positionVector3.down * Time.deltaTime * speed都具有{{1,}},因此您可以简单地检查Y分量并跳过指定范围之间的移动,例如< / p>

Vector3

在原始OP中没有提到过冲,但正如@derHugo指出的那样,您可以限制移动以避免过冲。一种可能性是这样,它将限制关于最近边界的移动,从而防止从一个边界跳到另一个边界...

if(transform.position.y < -6 || transform.position.y > 6)
{
    // the Vector3.down is (0, -1, 0) so this operation will change only Y component anyway
    transform.position += Vector3.down * Time.deltaTime * speed;
}

答案 1 :(得分:0)

据我了解的问题,您希望将对象限制在-6和6之间。

您可以例如使用Mathf.Clamp来限制position.y,例如

transform.position = new Vector3(transform.position.x,      
                                 Mathf.Clamp(transform.position.y + Time.deltaTime * speed, -6.0f, 6.0f), 
                                 transform.position.z);

other answer相反,这将运动完全限制在给定值,并防止了任何超调。一旦达到一个限制,它仍然仍然可以将对象移回,而一旦达到限制,另一个答案将忽略以后的任何移动。