1. Asset 폴더 내부에, C# Script 만들어서,
키보드를 눌러, 플레이어나 몬스터를 이동시키도록 할 수 있다.
// 유니티를 사용하기위해 불러오기
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
// PlayerMove라는 클래스 만들기
public class PlayerMove : MonoBehaviour
{
public float maxSpeed; // 유니티 내부에서 값을 지정할 수 있는 maxSpeed라는 이름의 공간을 만듬
Rigidbody2D rigid; // rigid라는 이름을 가진, RigidBody2D형식의 변수(공간)을 만듬
SpriteRenderer sr; // sr라는 이름을 가진, SpriteRenderer형식의 변수(공간)을 만듬
Animator anim; // anim라는 이름을 가진, Animator형식의 변수(공간)을 만듬
void Awake() // 실행시 가장 처음 실행되는 함수
{
rigid = GetComponent<Rigidbody2D>(); // 플레이어에게 적용하기 위한 Rigidbody2D 컴포넌트 가져오기
sr = GetComponent<SpriteRenderer>(); //SpriteRenderer 컴포넌트 불러옴
anim = GetComponent<Animator>(); //Animator 컴포넌트 불러옴
}
void Update() // 1초에 60번 실행 (1프레임마다 1번실행)
{
// Horizontal에 해당하는 키가 눌렸다가, 떨어졌을때 실행
if(Input.GetButtonUp("Horizontal")){
// 키에서 손을 땠을때, 캐릭터 속도 급격히 줄이기
rigid.velocity = new Vector2(rigid.velocity.normalized.x * 0.5f, rigid.velocity.y);
// normalized 속도의 방향값만 구함 1 or -1
// float 끼리 연산할때는 숫자뒤에 f 붙이기
}
// 스프라이트 방향 바꾸기
// Horizontal에 해당하는 키 눌렸을때 실행
if(Input.GetButtonDown("Horizontal")){
// flipX 값을 true로 바꾸어 실행
sr.flipX = Input.GetAxisRaw("Horizontal") == -1;
}
// 애니메이션 바꾸기
// Mathf.Abs()함수는 괄호안의 숫자를 절댓값으로 바꿔줌
// 캐릭터 속도가 높아지면, 움직이는 애니메이션으로 바꾸고,
// 캐릭터 속도가 낮아지면, 멈추어져 있는 애니메이션으로 바꿈
if(Mathf.Abs(rigid.velocity.x) < 0.4){
anim.SetBool("isWalking", false);
} else {
anim.SetBool("isWalking", true);
}
}
void FixedUpdate() // 일정 시간마다 반복해서 실행되는 함수
{
//Move By Key Control
float h = Input.GetAxisRaw("Horizontal"); // 키보드에서 입력을 받아온다.
rigid.AddForce(Vector2.right * h, ForceMode2D.Impulse); //캐릭터에게 Impulse 효과를 부여한다
if(rigid.velocity.x > maxSpeed){ //오른쪽 최대속도 지정 (안해주면 계속 빨라짐)
rigid.velocity = new Vector2(maxSpeed, rigid.velocity.y);
} else if(rigid.velocity.x < maxSpeed*(-1)) { //왼쪽 최대속도 지정
rigid.velocity = new Vector2(maxSpeed*(-1), rigid.velocity.y);
}
}
}
2. Assets 폴더 우클릭 > Create > Physics Material 2D
여러 사물의 재질을 만들어서, 마찰력을 조절할 수 있다.
( Collider > Material에 드래그해서 적용한다 )
3. 캐릭터 스프라이트 클릭 > Rigidbody 2D > Linear Drag
캐릭터의 공기저항을 설정할 수 있다.
( 크면 클수록 저항도 큼 )
4. 캐릭터 스프라이트 클릭 > Rigidbody 2D > Constraints > Freeze Rotation
캐릭터가 넘어지지 않도록 고정할 수 있다. ( 미설정시 애니메이션을 방해하므로 필수 )
5. Window > Animation > Animator > 애니메이션 우클릭 > Make Transition
조건에 따라, 애니메이션을 변경할 수 있도록 한다.
Parameters > "+"클릭 > 조건 만들기 ( bool ) > 조건 이름 설정
새로운 조건을 만들 수 있다.
Transition > Conditions
위에서 만든 조건을 트랜지션에 적용할 수 잇다.
Transition(화살표) 클릭 > Has Exit Time
조건이 바뀌자마자 애니메이션을 바꾸려면, 체크를 해제해야만 한다.
반응형