210824
Unity_Game #2
-테스트용 임시로 큰 뼈대 그리기
-플레이어 오브젝트 생성 및 카메라 위치와 크기 조정
플레이어의 움직임은 좌우, 점프를 구현해볼 것이다.
움직임에 따라 카메라가 따라가도록 하여 플레이어의 시야를 확보하도록 한다.
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(우) 입력시 이동을 확인
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 : 중력 계수
플레이어에게 가해지는 중력으로 값일 클수록 점프가 낮아지도록 할 수 있다.