我正在尝试在两个公共位置之间移动一个游戏对象(没有停止):
我有这个代码:
transform.position = Vector3.MoveTowards(transform.position, new Vector3(distanciaMinima, 0, 0), velocity * Time.deltaTime);
if(transform.position.x==distanciaMinima)
{
transform.position = Vector3.MoveTowards(transform.position, new Vector3(distanciaMaxima, 0, 0), velocity * Time.deltaTime);
}
else if(transform.position.x == distanciaMaxima)
{
transform.position = Vector3.MoveTowards(transform.position, new Vector3(distanciaMinima, 0, 0), velocity * Time.deltaTime);
}
但是当它在“DistanciaMinima”时,它就停在那里了。(我想每次它开始向distanciaMaxima移动时,distanciaMinima的代码就会执行。)
有解决办法吗
transform.position = Vector3.MoveTowards(transform.position, new Vector3(distanciaMinima, 0, 0), velocity * Time.deltaTime);
if(transform.position.x==distanciaMinima)
{
transform.position = Vector3.MoveTowards(transform.position, new Vector3(distanciaMaxima, 0, 0), velocity * Time.deltaTime);
}
else if(transform.position.x == distanciaMaxima)
{
transform.position = Vector3.MoveTowards(transform.position, new Vector3(distanciaMinima, 0, 0), velocity * Time.deltaTime);
}
2条答案
按热度按时间tjvv9vkg1#
我认为最简单的方法是组合
Mathf.PingPong
和Vector3.Lerp
在下面的代码中,
Mathf.PingPong
将返回一个值,该值将在值0和长度(在本例中为1)之间递增和递减。这与
Vector3.Lerp
相结合将使游戏对象从positionA
向positionB
连续移动(当插值为1时到达它),然后从positionB
向positionA
移动(当插值为0时到达它),等等。gg0vcinb2#
谢谢,它也可以使用bool变量“bool movingTowardsMinima=true;“……”
public void run(){