축척 값에 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;
}
}
안녕하세요, 감사 :
은 일부 의사 내가 무슨 말의 코드를 표시합니다. 방금 시도한 결과 객체가 장면으로 가져 오자 마자 즉시 (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,1)과 (1,1,1)을 바꿨다. 이제는 작동한다. 감사! –