본문 바로가기

프로젝트/BossRush

[BossRush] 1일차 : 플레이어 이동 & 점프 구현

728x90
반응형

개발한지 오래되니 뭐라도 만들고 싶다는 생각이 들어 시작하게 된 프로젝트.

예전에 남자친구랑 컨셉으로 얘기만 했던건데 혼자서라도 만들어 보자는 생각으로 시작했슴당.


기획

기획은 배워 본 적도, 해본 적도 없기에 유저로 지내온 경험을 살려 대충 때려박았다 ㅋㅋ

아마 앞으로 방향은 기획과 개발을 동시에 하지 않을까 싶다.

1일차는 우선 플레이어 캐릭터를 움직이는 걸 만들어야겠다는 생각이 들었다.

일단 2D & PC로 정했기 때문에 이동키보드 방향키공격z, 스킬x로 기획했다.


개발

1일차 개발은 플레이어 이동과 점프를 구현했다.

 

구현할 때 중요한 부분이라고 생각한 점은

1. 움직임이 부드러워야 한다.

2. 조작감이 좋아야 한다.

3. 점프 도중에 이동이 자유로워야 한다.

이렇게 3가지였다.

 

그래서 수치를 조절하며 테스트 할 수 있도록 코딩을 했다.

using UnityEngine;

public class PlayerController : MonoBehaviour 
{
    [SerializeField] private Rigidbody2D rigidBody;
    [SerializeField] private float moveSpeed;
    [SerializeField] private float jumpSpeed;
    [SerializeField] private float jumpDuration;

    private Vector2 moveInput;
    private Vector2 position;
    private float jumpTime;
    private bool isJumping;

    void Update() 
    {
        moveInput.x = Input.GetAxisRaw("Horizontal");
        position.x = moveInput.x * moveSpeed;
        position.y = rigidBody.velocity.y;
        rigidBody.velocity = position;
        
        if (Input.GetKeyDown(KeyCode.UpArrow) && !isJumping) 
        {
            isJumping = true;
        }

        if (isJumping) 
        {
            jumpTime += Time.deltaTime;
            position.y = jumpTime < jumpDuration * 0.5f ? jumpSpeed : -jumpSpeed;
            rigidBody.velocity = position;
            
            if (jumpTime >= jumpDuration)
            {
                isJumping = false;
                position.y = 0;
                jumpTime = 0f;
                rigidBody.velocity = position;
            }
        }
    }
}

 

추후 충돌 처리를 위해 Rigidbody2D를 사용하여 이동을 구현했다.

Input.GetAxisRaw("Horizontal")를 사용해 좌우 입력을 입력 받고 속도를 설정한다.

y축은 점프 동작을 위해 유지하도록 해두었다.

 

중복 점프를 막기 위하여 isJumping 변수를 사용하였다.

점프하고 있지 않은 경우에 점프키 입력을 감지받으면 점프를 시작한다.

점프는 정해진 시간 동안 상승과 하강을 한다.

정해진 시간이 되면 변수들을 초기화하여 제자리 상태로 만든다.

 

공격과 스킬은 우선 보스를 만들어야 테스트 해 볼 수 있을거 같아 다음에 만들어야겠당.

728x90
반응형