YunDev

Unity - 2D 게임 플레이어 이동구현 본문

Programming/Unity

Unity - 2D 게임 플레이어 이동구현

S준 2020. 4. 15. 20:57

 

 

안녕하세요!! 오늘은 2D게임에서 플레이어의 이동구현 코드에 대해 알아보도록 하겠습니다~

 

 

그 전에, 2D에서는 플레이어를 카메라가 따라가게 하고 싶다면 플레이어 안에다 카메라를 넣어주시면 끝입니다!

 

 

 

 

 

 

1.플레이어 이동

 

using System.Collections;
using System.Collections.Generic;
using UnityEngine;

public class PlayerMove : MonoBehaviour
{


    public float maxSpeed;
    Rigidbody2D rigid;
    
    void Awake()
    {
        rigid = GetComponent <Rigidbody2D>();
     
    }

      
      void FixedUpdate()
    {
        //Move Speed
        float h = Input.GetAxisRaw("Horizontal");
        rigid.AddForce(Vector2.right * h, ForceMode2D.Impulse);

        //Max Speed
        if (rigid.velocity.x > maxSpeed) //Right Max Speed
            rigid.velocity = new Vector2(maxSpeed, rigid.velocity.y);

        else if (rigid.velocity.x < maxSpeed*(-1)) //Left Max Speed
            rigid.velocity = new Vector2(maxSpeed*(-1), rigid.velocity.y);
            
    }

 

플레이어는 일정한 속도로 움직여야 합니다. 그냥 h를  곱해주면 플레이어의 속도가 너무 빨라지므로

맥스 스피드라는 속도를 제한하는 변수를 만들어서 제한 속도를 넘어가면 현재 속도를 맥스 스피드로 정해줍니다.

저는 맥스 스피드를 3으로 했고 플레이어가 왼쪽으로 이동하면 값 -1을 출력하기 때문에 (-1)을 곱해야합니다!

 

 

2. 방향 전환, 키를 뗏을 때의 속도 조절

 

 

    void Awake()
  
    {
        spriteRenderer = GetComponent<SpriteRenderer>();
    }
    
    void Update()
    { 
    
   		 //Stop Speed
        if (Input.GetButtonUp("Horizontal"))
        {
            
            rigid.velocity = new Vector2(rigid.velocity.normalized.x*0.5f, rigid.velocity.y);
        }

        //Direction Sprite
        if (Input.GetButton("Horizontal"))
             spriteRenderer.flipX = Input.GetAxisRaw("Horizontal") == -1;
             
    }

 

GetButtonUp은 키를 뗏을 때를 의미합니다. 방향키를 떼엇다면 현재 속도를 단위 값(1)으로 만들고 0.5를 곱해주어 속도를 점점 멈추게 합니다.

 

flipX는 플레이어가 바라보고 있는 방향을 바꿀 수 있는데 true라면 왼쪽을, false라면 오른쪽을 바라봅니다.

조건이 -1이기 때문에 왼쪽 방향키를 누르면 true가 되서 왼쪽을 바라보고 그냥 1일 땐 false이기 때문에 오른쪽을 바라봅니다.

 

오른쪽으로 이동할 때

 

왼쪽으로 이동할 때

 

 

 

 

 

이렇게 플레이어의 이동에 대해서 알아보았습니다.

 

다음은 '점프'로 글을 올리도록 하겠습니당~~ :D

 

 

영상 출처 : https://www.youtube.com/watch?v=Z4iULRbiSTg

 

 

 

도트(그림) 출처 : https://blog.naver.com/gold_metal/221613270615

 

[유니티강좌] 아틀라스에 대해서

해당 강좌에서는 이미 제가Aseprite에서 아틀라스를 만들었지만직접 아틀라스를 만들고 싶으신 분들을 위...

blog.naver.com