Unity_Game #2

haechi·2021년 8월 24일
0

unity

목록 보기
34/39

210824
Unity_Game #2


  • 맵 테스트 및 플레이어 움직임 구현

-테스트용 임시로 큰 뼈대 그리기

-플레이어 오브젝트 생성 및 카메라 위치와 크기 조정

플레이어의 움직임은 좌우, 점프를 구현해볼 것이다.
움직임에 따라 카메라가 따라가도록 하여 플레이어의 시야를 확보하도록 한다.

  • 좌우 이동
    -Movement2D.cs
using System.Collections;
using System.Collections.Generic;
using UnityEngine;

public class PlayerController : MonoBehaviour
{
    private Movement2D movement2D;

    private void Awake()
    {
        movement2D = GetComponent<Movement2D>();
    }

    // Update is called once per frame
    void Update()
    {
        float x = Input.GetAxisRaw("Horizontal");   // 좌 우 입력
        movement2D.Move(x); // 입력받은 float x로 이동방향 제어
    }
}

-PlayerController.cs

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

public class Movement2D : MonoBehaviour
{
    [SerializeField]
    private float speed = 5.0f; // 속도   
    private Rigidbody2D rigid2D;    

    private void Awake()
    {
        rigid2D = GetComponent<Rigidbody2D>();  // Rigidbody2D의 컴포넌트를 가진다.
    }

    public void Move(float x)
    {
        // x 축 이동은  x * speed, y 축은 기존의 속력 값
        rigid2D.velocity = new Vector2(x * speed, rigid2D.velocity.y);
    }
}

PlayerController에서 입력을 받아 Movement의 이동 함수를 호출

실행시 좌우 방향키 혹은 a(좌)d(우) 입력시 이동을 확인

  • 점프 추가
    -Movement.cs
using System.Collections;
using System.Collections.Generic;
using UnityEngine;

public class Movement2D : MonoBehaviour
{
    [SerializeField]
    private float speed = 5.0f; // 속도   
    [SerializeField]
    private float jumpForce = 8.0f; // 점프 힘 (클수록 높이 점프한다)
    [SerializeField]
    private float gs = 1.5f;
    private Rigidbody2D rigid2D;
    

    private void Awake()
    {
        rigid2D = GetComponent<Rigidbody2D>();  // Rigidbody2D의 컴포넌트를 가진다.
    }
    private void FixedUpdate()
    {
        rigid2D.gravityScale = gs;    // 점프 높이 조절
    }

    public void Move(float x)   // 좌우 이동
    {
        // x 축 이동은  x * speed, y 축은 기존의 속력 값
        rigid2D.velocity = new Vector2(x * speed, rigid2D.velocity.y);
    }
    public void Jump()  // 점프
    {
        // fumpForce의 크기만큼 위 방향으로 속력 설정
        rigid2D.velocity = Vector2.up * jumpForce;
    }
}

-PlayerController.cs

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

public class PlayerController : MonoBehaviour
{
    private Movement2D movement2D;

    private void Awake()
    {
        movement2D = GetComponent<Movement2D>();
    }

    // Update is called once per frame
    void Update()
    {
        float x = Input.GetAxisRaw("Horizontal");   // 좌 우 입력
        movement2D.Move(x); // 입력받은 float x로 이동방향 제어

        // 스페이스 키를 누르면 점프
        if (Input.GetKeyDown(KeyCode.Space))
        {
            movement2D.Jump();
        }
    }
}

Movement.cs에서 gravityScale을 설정할 수 있도록 변수를 생성해두었다.
-rigid2D.gravityScale : 중력 계수
플레이어에게 가해지는 중력으로 값일 클수록 점프가 낮아지도록 할 수 있다.

참고
https://velog.io/@kimhaech/Unity2DBasic-6

profile
공부중인 것들 기록

0개의 댓글