Unity. Vector3.SmoothDamp()

μ΅œλŒ€ 1 λΆ„ μ†Œμš”

🌟 Vector3.SmoothDamp()

κ²Œμž„μ„ λ§Œλ“€ λ•Œ 메인 카메라가 μ–΄λŠ 정도 거리λ₯Ό 두고 ν”Œλ ˆμ΄μ–΄λ₯Ό 따라 κ°€κ²Œ ν•˜λ €λ©΄, Rig 였브젝트λ₯Ό λ§Œλ“€μ–΄μ„œ 메인 카메라λ₯Ό ν•˜μœ„μ— 두고 μΌμ •ν•œ 거리λ₯Ό λ‘κ²Œ λ§Œλ“€μ–΄ Rig μ˜€λΈŒμ νŠΈκ°€ ν”Œλ ˆμ΄μ–΄λ₯Ό 따라 κ°€κ²Œ λ§Œλ“œλŠ” 방법이 μžˆλ‹€. ν•˜μ§€λ§Œ 이것보닀 더 λΆ€λ“œλŸ¬μš΄ μ›€μ§μž„μ„ ꡬ사해야 ν•˜λŠ” κ²½μš°κ°€ μžˆλŠ”λ°, κ·Έλ•Œ λ°”λ‘œ Vector3.SmoothDamp()λ₯Ό μ‚¬μš©ν•œλ‹€.

🌟 μ‚¬μš©λ²•

public class ExampleClass : MonoBehaviour {
    public Transform target;
    public float smoothTime = 0.3F;
    private Vector3 velocity = Vector3.zero;
    void Update() {
        Vector3 targetPosition = target.TransformPoint(new Vector3(0, 5, -10));
        transform.position = Vector3.SmoothDamp(transform.position, targetPosition, ref velocity, smoothTime);
    }
}

첫 번째 μΈμžλŠ” ν˜„μž¬ μœ„μΉ˜, 두 번째 μΈμžλŠ” 도달할 μœ„μΉ˜, μ„Έ λ²ˆμ§ΈλŠ” 였브젝트의 λ§ˆμ§€λ§‰ 속도, 즉, ν˜„μž¬ 속도이닀. 이 λ•Œ μ„Έ 번째 μΈμžλŠ” 값이 맀번 μˆ˜μ •λ˜κ³  λ§ˆμ§€λ§‰ μΈμžλŠ” νƒ€κ²Ÿμ— λ„λ‹¬ν•˜κΈ° μœ„ν•œ λŒ€λž΅μ μΈ μ‹œκ°„μ΄λ‹€. μ‹œκ°„μ΄ 짧을 수둝 νƒ€κ²Ÿμ— 빨리 λ„μ°©ν•œλ‹€.

public static Vector3 SmoothDamp(Vector3 current, Vector3 target, ref Vector3 currentVelocity, float smoothTime, float maxSpeed = Mathf.Infinity, float deltaTime = Time.deltaTime);

μ˜ˆμ‹œμ—λŠ” μ—†μ—ˆμ§€λ§Œ 뒀에 μΆ”κ°€μ μœΌλ‘œ μ΅œλŒ€ 속도λ₯Ό μ§€μ •ν•  수 μžˆλ‹€. deltaTime은 이 ν•¨μˆ˜κ°€ λ§ˆμ§€λ§‰μœΌλ‘œ 호좜되고 λ‚˜μ„œμ˜ κ²½κ³Ό μ‹œκ°„μ΄λ‹€. λ‘˜ λ‹€ λ””ν΄νŠΈλ‘œ μ§€μ •λœ 게 μžˆλ‹€.

λŒ“κΈ€λ‚¨κΈ°κΈ°