我正在寻找一种方法来限制对象的Y轴上的变换位置。要移动,我正在使用该代码
transform.position += Vector3.down * Time.deltaTime * speed;
仅当玩家按住按钮时对象才移动,此后对象将返回第一位置。如何阻止Y轴从6到-6的移动?
答案 0 :(得分:2)
由于transform.position
和Vector3.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相反,这将运动完全限制在给定值,并防止了任何超调。一旦达到一个限制,它仍然仍然可以将对象移回,而一旦达到限制,另一个答案将忽略以后的任何移动。