2017-09-24 10 views
0

원점과의 거리에 따라 2D 게임 객체의 크기를 조정할 수있는 방법을 찾고있었습니다. 게임 개체의 거리가 4 단위 일 때 로컬 눈금 (1,1,1)을 가져야합니다. 원점에 도달하면 로컬 눈금 (0,0,1)을 가져야합니다. 이것은 게임 객체가 점점 멀어지고 있다는 착각을 불러 일으킬 것입니다. 누군가가 이것을 어떻게 달성 할 수 있는지 안다면 나에게 알려 주시면 감사하겠습니다. 사전에Unity - 원점으로부터의 거리에 따라 로컬 스케일 변경

감사합니다,

토미

답변

2

축척 값에 linear interpolation을 사용할 수 있습니다. 변환 로컬 스케일에서 [Vector3][1]을 가져 와서 원점으로부터 거리를 전달하십시오. 빠른 응답

get the transform 
in the update figure out the distance from the origin 
get the lerped value (Vector3.lerp(new Vector3(1,1,1), new Vector3(0,0,1), distance from center)) 

추가 예제 코드

public class Scaling : MonoBehaviour 
{ 
    private Transform trans; 

    void Start() 
    { 
     trans = gameObject.transform; 
    } 

    void Update() 
    { 
     float dist = Vector3.Distance(Vector3.zero, transform.position); 

     //don't scale if further away than 4 units 
     if(dist > 4) 
     { 
      transform.localScale = Vector3.forward; 
      return; 
     } 

     //work out the new scale 
     Vector3 newScale = Vector3.Lerp(Vector3.one, Vector3.forward, dist/4); 
     transform.localScale = newScale; 
    } 
} 

enter image description here

+0

안녕하세요, 감사 :

은 일부 의사 내가 무슨 말의 코드를 표시합니다. 방금 시도한 결과 객체가 장면으로 가져 오자 마자 즉시 (0,0,1)의 로컬 스케일로 이동합니다. 중간에 도달하면 (1,1,1)의 지역 척도를 갖습니다. 이 문제를 해결하는 방법을 모르겠습니다 - 여기까지 제 코드가 있습니다 : float distanceFromOrigin = Vector2.Distance (transform.position, Vector2.zero); \t \t 벡터 3 targScale = Vector3.Lerp (새 Vector3 (1,1)), 새 Vector3 (0, 0, 1), distanceFromOrigin); \t \t transform.localScale = targScale; –

+0

신경 쓰지 마라. 나는 (0,0,1)과 (1,1,1)을 바꿨다. 이제는 작동한다. 감사! –

관련 문제