유니티 C# 2d 게임 가속도 제어하는 방법 예시 코드 작성

반응형

유니티 C# 2d 게임 가속도 제어하는 방법 예시 코드 작성

using UnityEngine;

public class PlayerController : MonoBehaviour
{
    public float acceleration = 5f; // 가속도
    public float maxSpeed = 10f; // 최대 속도
    private Vector2 velocity; // 현재 속도

    void Update()
    {
        // 입력을 받아 x축 방향으로 가속도 계산
        float moveInput = Input.GetAxis("Horizontal"); // -1.0f (왼쪽) 또는 1.0f (오른쪽)

        // 가속도 적용
        if (moveInput != 0)
        {
            velocity.x += moveInput * acceleration * Time.deltaTime; // 가속도 적용
            velocity.x = Mathf.Clamp(velocity.x, -maxSpeed, maxSpeed); // 최대 속도 제한
        }
        else
        {
            // 이동하지 않을 때 속도 감속
            velocity.x = Mathf.MoveTowards(velocity.x, 0, acceleration * Time.deltaTime);
        }

        // 물체의 위치 업데이트
        transform.position += (Vector3)velocity * Time.deltaTime;
    }
}

 


코드 설명

  1. 변수 설명:
    • acceleration: 물체의 가속도를 조절하는 변수입니다.
    • maxSpeed: 물체의 최대 속도를 설정합니다.
    • velocity: 물체의 현재 속도를 저장합니다.
  2. Update() 메서드:
    • Input.GetAxis("Horizontal")를 통해 사용자의 입력을 받아 x축 방향으로 가속도를 계산합니다.
    • 가속도를 적용하고, 속도가 최대 속도를 넘지 않도록 Mathf.Clamp로 제한합니다.
    • 사용자가 입력하지 않을 경우, Mathf.MoveTowards를 사용하여 속도를 점진적으로 줄여 정지하도록 합니다.
  3. 물체 위치 업데이트:
    • 최종적으로 계산된 속도를 사용하여 물체의 위치를 업데이트합니다.

 

사용법

  1. 유니티 에디터에서 2D 게임 오브젝트(예: 스프라이트)에 이 스크립트를 추가합니다.
  2. acceleration과 maxSpeed 값을 조정하여 원하는 가속도와 최대 속도를 설정합니다.
  3. 플레이 모드에서 좌우 방향키를 사용하여 물체를 가속하고 감속할 수 있습니다.
반응형