728x90
가장 중요한 고영희를 움직이게 해주겠습니다.
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
|
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
public class Player : MonoBehaviour
{
public int maxSpeed;
public int jumpPower;
Rigidbody2D rigid;
Animator anim;
void Start()
{
rigid = GetComponent<Rigidbody2D>();
anim = GetComponent<Animator>();
void Update()
{
Move();
Walk();
Jump();
}
void FixedUpdate()
{
LandingJump();
MaxSpeed();
}
|
- maxSpeed - 최대 속력을 저장할 변수이다.
- jumpPower - 점프 힘을 저장할 변수이다.
- rigid - 이동과 점프의 힘을 적용시켜줄 변수이다.
- anim - 이동과 점프에 따른 애니메이션을 재생시켜줄 변수이다.
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
|
void Walk()
{
if (rigid.velocity.x == 0)
{
anim.SetBool("isRun", false);
}
else
{
anim.SetBool("isRun", true);
}
}
void Move()
{
float h = Input.GetAxisRaw("Horizontal");
rigid.AddForce(Vector2.right * h, ForceMode2D.Impulse);
}
void MaxSpeed()
{
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);
}
}
|
15행의 h의 값에 따라 Walk 함수에서는 애니메이션을 조절해주고, Move 함수에서는 rigid에 힘을 가해준다. 그리고 MaxSpeed에서는 Move 함수를 통해 계속 올라가는 속도를 최대 속도에 맞게 조절해주는 역할을 한다.
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
|
void Jump()
{
if (Input.GetButtonDown("Jump") && !anim.GetBool("isJump"))
{
rigid.AddForce(Vector2.up * jumpPower, ForceMode2D.Impulse);
anim.SetBool("isJump", true);
}
}
void LandingJump()
{
if (rigid.velocity.y < 0)
{
Debug.DrawRay(rigid.position, Vector2.down * 1f, Color.green);
RaycastHit2D raycastHit = Physics2D.Raycast(rigid.position, Vector2.down, 1, LayerMask.GetMask("Ground"));
if (raycastHit.collider != null)
{
if (raycastHit.distance <= 1f)
{
anim.SetBool("isJump", false);
}
}
}
}
}
|
Jump 함수는 점프키가 눌리고 현재 점프 중이 아니라면 힘을 가해주는 것과 애니메이션을 재생시켜주는 것을 한다.
LandingJump 함수는 RayCastHit2D를 사용해서 레이캐스트에 조건에 맞는 콜라이더가 발견이 된다면 점프 애니메이션을 중지시켜준다.
728x90
'Project > 우다다다 고영희' 카테고리의 다른 글
[우다다다 고영희] Unity: UI 화면 구성하기 (0) | 2020.05.25 |
---|---|
[우다다다 고영희] Unity: 오브젝트 풀링을 이용한 무한 장애물 (0) | 2020.05.24 |
[우다다다 고영희] Unity: 무한 배경 만들기 (0) | 2020.05.22 |
[우다다다 고영희] Aseprite: 스프라이트 만들기 (0) | 2020.05.20 |
[우다다다 고영희] Unity: 게임 기획 (0) | 2020.05.19 |