반응형

게임 플레이어 캐릭터를 설정하고 상황에 따른 애니메이션 적용과 움직임에 대하여 스크립트를 작성합니다.

  • 캐릭터 애니메이션을 위하여 Animations 폴더를 생성합니다.
  • 캐릭터의 기본 모습/상태의 스프라이트를 한번에 잡아서 화면에 배치합니다.
  • 2D의 경우 각 움직이는 이미지가 나눠져 있고, 3D는 다른 방식으로 애니메이션을 적용합니다.

  • 나눠진 이미지에 대한 새로운 애니메이션을 저장합니다.

  • 플레이어나 다른 캐릭터를 클릭하면 현재, Pixels Per Unit 의 값이 100으로 되어있습니다.
  • 현재 스케일이 1X1X1로 되어 있으며, 1 스케일에 사용되는 픽셀이 100 이기때문에, 크기가 작아지며, 동일한 스케일에 픽셀이 적을수록 크기가 커지게됩니다.
  • Player Run / Player Jump / halmoni / delivery 의 값을 화면에 알맞게 변경합니다.
  • 값을 조정하거나 스케일 값을 조정해도 괜찮습니다.

  • 플레이를 하면 캐릭터는 정상적으로 애니메이션이 작동하는 것을 확인할 수 있습니다.
  • 게임에서 플레이어와 같은 캐릭터는 중력이나 충돌에 영향을 받아야 합니다. 
  • 공중에 멈춰있는게 아닌 점프를 하면 떨어져야 하고, 물체에 부딛치거나 하는 물리법칙을 적용해야 합니다.
  • 플레이어 캐릭터에 Rigidbody 2D 와 Box Collider 2D를 Add Component 해줍니다.
  • 플레이어에만 해주면 바닥 아래로 추락하기 때문에 바닥에도 Box Collider 2D 를 적용해줍니다.
  • Box Collider는 충돌을 처리해주며, Rigidbody는 물리법칙과 중력을 작용하는 역할을 합니다.
using UnityEngine;

public class Player : MonoBehaviour
{
    [Header("Settings")]
    public float JumpForce;

    [Header("References")]
    public Rigidbody2D PlayerRigidBody;

    private bool isGrounded = true;

    void Start()
    {

    }


    void Update()
    {
        if (Input.GetKeyDown(KeyCode.Space) && isGrounded)
        {
            PlayerRigidBody.AddForceY(JumpForce, ForceMode2D.Impulse);
            isGrounded = false;
        }
    }

    private void OnCollisionEnter2D(Collision2D collision)
    {
        if(collision.gameObject.name == "Platform")
        {
            isGrounded=true;
        }
    }
}
  • 플레이어 점프를 위한 스크립트입니다. 
  • 점프에 대한 힘 값을 작성하고 스페이스 키를 입력하면 작성한 힘 만큼 점프를 합니다.
  • 연속적인 키 입력으로 점프가 계속 가능한 것을 방지하기 위해 바닥을 감지하여 조건을 주었습니다.
[Header("Settings")]
public float JumpForce;

[Header("References")]
public Rigidbody2D PlayerRigidBody;

private bool isGrounded = true;
  • JumpForce 는 점프에 대한 값 이며, 값이 높을 수록 높이 점프합니다.
  • isGrounded 는 점프 가능 여부에 대한 참/거짓 입니다.
void Update()
{
    if (Input.GetKeyDown(KeyCode.Space) && isGrounded)
    {
        PlayerRigidBody.AddForceY(JumpForce, ForceMode2D.Impulse);
        isGrounded = false;
    }
}
  • 스페이스를 입력하고 isGrounded가 참(true) 이면 점프가 가능합니다.
  • 점프 상태 이므로 isGrounded 를 거짓(false)로 변경하여, 점프가 안되도록 합니다.
private void OnCollisionEnter2D(Collision2D collision)
{
    if(collision.gameObject.name == "Platform")
    {
        isGrounded=true;
    }
}
  • isGrounded 가 다시 점프가 가능하도록 하려면 true 상태로 변경해줘야 합니다.
  • 이때, 플레이어가 Platform 이라는 오브젝트, 즉, 바닥과 충돌하면 변경하도록 하였습니다.

반응형

+ Recent posts