2017-03-24 1 views
0

오브젝트를 A 지점까지 이동시키고 A 지점에 도달하면 B 지점으로 이동해야합니다. B 지점에 도달하면 다시 A 지점으로 이동해야합니다.GameObject를 앞뒤로 움직입니다.

나는이

void Update() 
{ 
    transform.position = Vector3.Lerp(pointA, pointB, speed * Time.deltaTime); 
} 

에 대한 Vector3.Lerp를 사용할 수 있다고 생각하지만 어떻게 내가 다시 이동할 수 있습니다? 이것을 달성하는 우아한 방법이 있습니까? 물론 나는이 방법을 추천 Lerps을 필요 :

void Update() 
{ 
    transform.position = Vector3.Lerp(pointA, pointB, speed * Time.deltaTime); // Move up 
    transform.position = Vector3.Lerp(pointB, pointA, speed * Time.deltaTime); // Move down 
} 

누군가가 나를 도울 수 있을까요?

답변

4

여러 가지 방법이 있지만 Mathf.PingPong이이를 수행하는 가장 쉽고 간단한 방법입니다. Mathf.PingPong을 사용하여 과 사이의 숫자를 가져온 다음이 값을 Vector3.Lerp으로 전달하십시오. 그게 전부 야.

Mathf.PingPong 자동 그 0 1 사이에서 앞뒤로 이동한다 값을 반환한다. 자세한 정보는 링크 된 문서를 읽으십시오.

public float speed = 1.19f; 
Vector3 pointA; 
Vector3 pointB; 

void Start() 
{ 
    pointA = new Vector3(0, 0, 0); 
    pointB = new Vector3(5, 0, 0); 
} 

void Update() 
{ 
    //PingPong between 0 and 1 
    float time = Mathf.PingPong(Time.time * speed, 1); 
    transform.position = Vector3.Lerp(pointA, pointB, time); 
} 
+1

와우! 고마워. – Question3r

관련 문제