반응형
유니티 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;
}
}
코드 설명
- 변수 설명:
- acceleration: 물체의 가속도를 조절하는 변수입니다.
- maxSpeed: 물체의 최대 속도를 설정합니다.
- velocity: 물체의 현재 속도를 저장합니다.
- Update() 메서드:
- Input.GetAxis("Horizontal")를 통해 사용자의 입력을 받아 x축 방향으로 가속도를 계산합니다.
- 가속도를 적용하고, 속도가 최대 속도를 넘지 않도록 Mathf.Clamp로 제한합니다.
- 사용자가 입력하지 않을 경우, Mathf.MoveTowards를 사용하여 속도를 점진적으로 줄여 정지하도록 합니다.
- 물체 위치 업데이트:
- 최종적으로 계산된 속도를 사용하여 물체의 위치를 업데이트합니다.
사용법
- 유니티 에디터에서 2D 게임 오브젝트(예: 스프라이트)에 이 스크립트를 추가합니다.
- acceleration과 maxSpeed 값을 조정하여 원하는 가속도와 최대 속도를 설정합니다.
- 플레이 모드에서 좌우 방향키를 사용하여 물체를 가속하고 감속할 수 있습니다.
반응형