유니티 게임 개발/Jumping Rabbit
[유니티] Jumping Rabbit #6 클리어 박스 애니메이션 추가 및 버그 수정
노랑꼬리
2022. 11. 24. 22:50
※ 변경사항
상자 오픈 애니메이션 추가, 고속으로 이동시 벽 뚫는 버그 제거
1. 상자 오픈 애니메이션 추가
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
33
34
35
36
37
|
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
public class Clear : MonoBehaviour
{
Animator anim;
public GameObject ClearPanel;
void Start()
{
anim = GetComponent<Animator>();
anim.SetBool("Clear", false);
ClearPanel.SetActive(false);
}
private void OnTriggerEnter2D(Collider2D Collider)
{
if (Collider.gameObject.tag == "Player")
{
anim.SetBool("Clear", true);
}
}
private void OnCollisionEnter2D(Collision2D collision)
{
if (collision.gameObject.tag == "Player")
{
Time.timeScale = 0;
ClearPanel.SetActive(true);
}
}
}
|
cs |
상자에 박스 콜라이더, 캡슐 콜라이더 두가지를 주어 만들었다.
아래 필수로 지나가는 통로의 경우 콜라이더에 isTrigger 속성을 주어 이 구간을 지날 때 박스가 열릴 수 있도록
SetBool("Clear", true) 값을 주었다.
2. 버그수정
기존 버전에서는 빠른 속도로 벽 충돌 시 캐릭터가 벽을 뚫는 경우가 있었다.
물리연산은 FixedUpdate()에서 이루어지며 0.02초의 주기를 가진다. 콜라이더는 얇은 선으로 충돌을 감지한다.
오브젝트의 속도가 빨라질 경우 0.02초 사이에 이 얇은 선을 뚫고 지나가 충돌 판정이 이루어지지 않게 되어 벽을 뚫는 경우가 발생한다.
이를 해결하기 위해서 Player 오브젝트 Rigidbody에 Continuous 속성을 주었다.
기본 discrete 속성은 얇은 선에서만 충돌판정이 이루어지나 Continuous 의 경우 콜라이더 내부까지 모두 물리연산 처리 범위로 두게 되어 문제해결이 가능하다.