728x90
반응형
unity를 이용해서 횡스크롤 rpg 게임을 만들 것이다.
딱히 이유는 없고 방학을 좀 더 알차게 보내려고 시작했다.
ERROR는 게임 코드네임이다.
Unity와 C#을 깊이있게 배운 것이 아니기 때문에 단어 선택이 좀 틀릴 수도 있다.
player 캐릭터를
circleCollider2D와 boxCollider2D를 이용해서 collider을 설정해줬고
Rigidbody2D도 넣어주고 freezeRotation또한 해줬다.
playerController C#파일에
아래와 같은 코드를 입력해서
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
|
float WalkSpeed = 4.0f;
int Direction;
Rigidbody2D rigid2D;
void Walk(int Direction)
{
this.rigid2D.velocity = new Vector2(Direction * this.WalkSpeed, this.rigid2D.velocity.y);
}
void Start()
{
this.rigid2D = GetComponent<Rigidbody2D>();
}
void Update()
{
Direction = 0;
if (Input.GetKey(KeyCode.D)) Direction = 1; //입력에 따른 이동방향
if (Input.GetKey(KeyCode.A)) Direction = -1;
Walk(this.Direction);
}
|
cs |
키보드의 A, D 버튼에 따라서 Direction을 정해주고
walk함수를 따로 정의해줘서 물체의 속도를 정해주는 방법을 사용했다.
하지만 이렇게만 한다면 캐릭터의 방향이 이동방향을 향하지 않기 때문에 부자연스럽다. 그렇기에
1
2
3
4
|
if (Direction != 0) //케릭터의 이동방향과 몸방향을 일치
{
transform.localScale = new Vector3(Direction , 1, 1);
}
|
cs |
위 코드를 walk 함수에 입력해서 scale을 조정해서 캐릭터가 이동방향을 바라보게 했다.
jump를 시키기 위해서
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
|
Rigidbody rigid2D;
float jumpSpeed = 15.0f;
void Jump()
{
this.rigid2D.velocity = new Vector2(this.rigid2D.velocity.x, this.jumpSpeed);
}
void Start()
{
this.rigid2D = GetComponent<Rigidbody2D>();
}
void Update()
{
if (Input.GetKeyDown(KeyCode.W)) Jump(); // 점프
}
|
키보드 W키를 인식해서 velocity의 y축 값을 적당한 jumpSpeed로 바꾸게 했다.
addForce를 이용해서 이동을 시키게 된다면 플레이 할 때 더 직관적인 움직임이 안 나오는 경향이 있어서 속도를 변경 시키는 방법을 이용했다.
728x90
반응형
'Unity > 2D RPG' 카테고리의 다른 글
회복 아이템 by Unity (0) | 2021.07.18 |
---|---|
캐릭터(슬라임) by Unity (0) | 2021.07.18 |
원거리 공격 by Unity (0) | 2021.07.14 |
카메라 무빙 by Unity (0) | 2021.07.08 |
근접 공격 by Unity (0) | 2021.07.07 |