Collider
Collider
2D에서는 더 많은 기본 Collider의 종류가 있다. (지금 당장은 쓰지 않으니 혼자 만져볼것)
보통 나무가 있다고 하면 그 나무를 하나하나 Collider를 잡기보다, 큰 Cube 모양으로 잡는다.
Collider layer
충돌에서, 특정 객체가 충돌이 안되게 하려면 Layer 처리를 하면 된다.
*나중에 디펜스 게임류를 만들게 된다면, 터렛같은걸 만들때는 콜라이더로 하진 않음, Raycaste 기능을 사용
*보통 A는 되고 B는 안된다(충돌) 같은건 보통 Layer로 처리함, 유령 같은걸 만들 때에도 Layer 처리로 보였다 안보였다 만들게 할 수 있음(투명도를 써도 가능)
Collider properties
![]() |
![]() |
Dynamic Friction : 움직이는 대상 마찰력, 일반적으로 0~1, 값이 0이면 얼음처럼 미끄러지고 1이면 큰 힘이나 중력에 밀리지 않는한, 빠르게 정지함
Static Friction : 오브젝트가 표면 위에 가만히 놓여 있을때 사용되는 마찰, 일반적으로 0~1, 0이면 미끄러지고 1이면 밀기 힘들다.
Bounciness : 표면이 얼마나 탄성적인지를 나타냄, 일반적으로 0~1, 0이면 물체가 튕기지 않고 1이면 에너지 손실 없이 튕김 // 충돌할때에 바닥면에도 탄성이 있어야 한다. 자세한 계산은 물리.
참조 :https://docs.unity3d.com/kr/560/Manual/class-PhysicMaterial.html
물리 머티리얼 - Unity 매뉴얼
Physic Material 은 충돌하는 오브젝트의 마찰 또는 바운스 효과를 조정하는 데 사용합니다.
docs.unity3d.com
Rigidbody
Rigidbody properties
Mess : 질량(디폴트 값은 킬로그램)
Drag : 물체가 힘에 의해 움직일때, 공기 저항이 영향을 미치는 정도, 0~infinity의 값, 0이면 공기저항이 없고, 무한대라면 오브젝트가 즉시 정지함
Angular Drag : 토크로 회전할 때 공기 저항이 미치는 정도, 0~infinity의 값, 0이면 공기저항이 없다. 다만 무한대여도 오브젝트의 회전이 멈추지는 않음
Use Gravity : 중력 On/OFF
Freeze Position : 월드 좌표계의 X,Y,Z 축에서 이동하는 Rigidbody를 선택적으로 중지시킴
Freeze Rotation : 로컬 좌표계의 X,Y,Z 축에서 회전하는 Rigidbody를 선택적으로 중지시킴
나머지 기능들도 참조
https://docs.unity3d.com/kr/560/Manual/class-Rigidbody.html
리지드바디 - Unity 매뉴얼
Rigidbody 는 GameObject 가 물리 제어로 동작하게 합니다. 리지드바디는 힘과 토크를 받아 오브젝트가 사실적으로 움직이도록 해줍니다. 리지드바디가 포함된 모든 게임 오브젝트는 중력의 영향을
docs.unity3d.com
Animation
Animation
단축키 : Ctrl + 6 , 혹은 Window - Animation - animation
* 보통 최상위(부모) 오브젝트에 애니메이션을 추가함, 자식오브젝트에 만들면 부모 오브젝트를 움직일 권한이 없기 때문
*특정 부분에 이벤트 프레임을 활용해 이벤트를 삽입하고, 스크립트 등을 넣는 방식으로 실행할 수 있다.
Animator
Animator : 애니메이션 동작을 관리하는 Component
생성시 아래 화면이 자동으로 나온다(Tap을 이동 가능)
![]() |
![]() |
왼쪽 그림과 같이 같이 빈 state를 생성하고, 오른쪽 그림과 같이 새로운 화살표를 이을 수 있다(여러개 잇는 것도 가능)
화살표는 transition이라고 한다
처음 들어가면 Entry와 door가 연결되어 있어 무한 실행이 될 텐데, 새로운 state를 만들어 주어 이를 해결해준다.
* Entry는 계속해서 실행함, Any state에 연결해야 특정 시기에 실행하는 과정을 만들 수 있음
* 문을 여는 모션의 속도를 -1 로 변경해 닫는 모션 실행 가능
transitions는 조건을 추가해서 촉발 가능, 우리는 캐릭터가 다가오면 자동으로 여닫히는 문을 만들 예정.
Trigger 형으로 Open, Close parameter(매개변수)를 만듦
*참조 : https://wergia.tistory.com/212
[Unity3D] Animation - 애니메이터 컨트롤러의 파라미터 조절하기
Animation - 애니메이터 컨트롤러의 파라미터 조절하기 작성 기준 버전 :: 2019.2 [본 포스트는 유튜브 영상으로도 시청하실 수 있습니다] 이번 섹션에서는 애니메이터 컨트롤러의 파라미터를 스크립
wergia.tistory.com
transitions을 클릭하고, 조건에 Open과 Close를 넣어줌.
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
public class DoorEvent : MonoBehaviour
{
public Animator anim; //public으로 선언한 Animator type 변수
public void OnTriggerEnter(Collider other)
{
//if (other.collider.CompareTag("asd")로도 가능
if (other.CompareTag("Player"))//(other.tag == "Player")
{
Debug.Log(other.name + "라는 대상의 감지가 시작되었다.");
anim.SetTrigger("Open"); // Animator에서 trigger paremeter open을 실행ㅈ
}
}
public void OnTriggerExit(Collider other)
{
Debug.Log("무엇인가 감지가 종료되었다");
if (other.CompareTag("Player"))
{
anim.SetTrigger("Close");
}
}
}
SetTrigger()를 활용해 문을 닫고, 여는 코드를 만들어 주고, 애니메이션을 넣은 최상위 오브젝트에 넣어준다.
*anim를 선언해줘야함.
* other.tag =="player" 방식보다 other.CompareTag("Player") 방식이 더 효율적(성능과 최적화 측면, string 문자열을 모두 비교하는 것보다 유니티 안에 있는 태그를 비교하는 방법
* public으로 변수를 선언해줬다면 유니티 창에서 끌어서 놓거나, 코드로 anim를 넣어줘야함
prativate라면 코드로만 넣을 수 있음
*애니메이션이 있는 물체의 Scale을 바꿀 때에는 Local Scale을 바꿔야 함.
참고 : https://docs.unity3d.com/kr/2022.3/Manual/class-Transition.html
애니메이션 전환 - Unity 매뉴얼
애니메이션 전환(Animation transitions)을 사용하면 상태 머신이 하나의 애니메이션 상태에서 다른 애니메이션 상태로 전환하거나 혼합될 수 있습니다. 전환은 상태 간의 혼합이 가져야 하는 기간뿐
docs.unity3d.com
JUMP
Rigidbody로 jump 구현
Rigidbody로 jump를 표현하는 방식은 물리적인 방식이고 Transform으로 할 수도 있지만 Transform 방식은 자주쓰진 않음.
예시 코드 : Rigidbody.AddForce( 힘 방향 x 힘, 힘의 종류)
*힘의 종류에는 Acceleration, Impulse, VelocityChange, Force 등이 있다.
Double jump 문제
특정 키를 눌렀을 때에 위의 코드가 작동되게 구성한다면, 공중에서도 점프가 가능한 더블 점프 문제가 발생한다.
이를 해결하기위해 '땅에 있을 때에만'이라는 조건을 조건식에 추가한다.
그리고 isGround의 상태를 다음과 같이 정의한다
이와 같은 방식으로 더블 점프 문제를 해결할 수 있다.
더 공부할 것 : Raycast란 무엇인가 ?
Rigidbody.MovePostio() 함수는 무엇인가 ?
다양한 유니티 혹은 C# 제공 함수들
'TIL' 카테고리의 다른 글
[멋쟁이사자처럼 부트캠프 TIL회고] Unity 게임개발 3기 11일차 (3) | 2024.11.29 |
---|---|
[멋쟁이사자처럼 부트캠프 TIL 회고] Unity 게임개발 3기 10일차 (0) | 2024.11.28 |
[멋쟁이사자처럼 부트캠프 TIL회고] Unity 게임개발 3기 8일차 (0) | 2024.11.26 |
[멋쟁이사자처럼 부트캠프 TIL회고] Untiy 게임개발 3기 7일차 (1) | 2024.11.26 |
[멋쟁이사자처럼 부트캠프 TIL회고] Unity 게임개발 3기 5일차 (0) | 2024.11.24 |