오브젝트가 벽에 부딪힐 때마다 체력과 투명도가 감소하여 10번 부딪히면 파괴된다
- 중력 삭제, 카메라의 가장자리 부분에 엣지 콜라이더 생성 및 머티리얼(마찰0, 탄력10) 추가
- Bouncer 스크립트와 오브젝트(rigidBoby2D, Bouncer 스크립트) 추가
처음 코드 작성(오류 발생)
- Main Camera: 사면의 Edge Collider(Material: 0, 10)
- Object: Bouncer, Circle Collider (Material: 0, 10), RigidBody2D (Material: 0, 10)
public class Bouncer : MonoBehaviour
{
// 게임 오브젝트의 체력
int healty = 100;
float opacity = 1.0f;
SpriteRenderer spriteRenderer;
// Start is called before the first frame update
void Start()
{
spriteRenderer = GetComponent<SpriteRenderer>();
Rigidbody2D rb2d = GetComponent<Rigidbody2D>();
rb2d.AddForce(new Vector2(5, 5), ForceMode2D.Impulse);
}
private void OnCollisionEnter2D(Collision2D collision)
{
healty -= 10;
opacity -= 0.1f;
if (healty <= 0)
{
Destroy(gameObject);
}
}
}
- opcity 변수는 필요없음. color의 투명도 값(알파값)은 디폴트 1.0f이다.
- spriteRenderer.color 값을 불러오지 못함
파라미터 값은 R, G, B, A 로 되어 있
// 완전한 빨간색 (불투명)
Color red = new Color(1.0f, 0.0f, 0.0f, 1.0f);
코드 수정
public class Bouncer : MonoBehaviour
{
// 변수 저장
int healty = 100;
SpriteRenderer spriteRenderer;
// Start is called before the first frame update
void Start()
{
// color 컴포넌트 저장
spriteRenderer = GetComponent<SpriteRenderer>();
// rigidBody 컴포넌트 저장 후 속도의 방향 및 크기 설정
Rigidbody2D rb2d = GetComponent<Rigidbody2D>();
rb2d.AddForce(new Vector2(2, 3), ForceMode2D.Impulse);
}
private void OnCollisionEnter2D(Collision2D collision)
{
// 투명도 감소시키기
Color color = spriteRenderer.color;
color.a -= 0.1f;
spriteRenderer.color = color;
// 충돌 시 체력 10 감소
healty -= 10;
// 체력이 0이 되면 오브젝트 파괴
if (healty <= 0)
{
Destroy(gameObject);
}
// 체력 확인용 출력
Debug.Log(healty);
}
}
- 충돌을 3번 한 뒤(남은 체력: 70) 빠른 속도로 오브젝트가 튕겨져 화면 밖으로 이탈하는 오류 발생
>>> 탄력성이 너무 커서 생긴 문제로 판단함(문제 해결을 위해 탄력성을 줄임)
- Materterial 메인캠의 Edge Collider에만 적용
- Bouncieness 10 → 1 로 축소
- 오브젝트의 벡터 크기 (2, 2)로 축소
위와 같이 수정하였더니 오브젝트의 이동 속도는 줄어들었지만 문제 사라짐
마찰 파라미터를 올리는 방법도 고안하였지만, 문제에서 마찰이 없는 환경을 구현했다고 했음
'코딩 공부 > Unity C#' 카테고리의 다른 글
오브젝트의 충돌 및 질량 (2) | 2024.07.21 |
---|---|
string 타입 예제 (0) | 2024.07.20 |
메서드 헤더 (0) | 2024.07.17 |
클래스 작성 및 Random (0) | 2024.07.13 |
추상화 연습 (0) | 2024.07.13 |