728x90
728x90
FPS에서 피격 시 KnockBack 넉백 피격효과 구현 Knock-Back은 게임에서 사용하는 단어로, 적을 공격할 때 뒤로 밀어내는 효과를 나타낸다. 보통 FPS 게임에서 총알에 맞을 때 살짝씩 뒤로 밀리는 동작을 일컫는다. 애니메이션 없이 넉백 시 약간의 위치값이 조정되는 기능을 구현해보았다. public float knockbackSpeed = 0.5f; m_State = EnemyState.Damage; transform.position += -Vector3.forward * KnockbackSpeed; 상태머신을 사용해 Enemy 상태가 Damage인 경우 Enemy Vector3.forward가 - 방향으로 kockbackSpeed 만큼 이동시켜 주었다. 여기서 Time.deltaTime을 ..
OnDrawGizmos() 함수를 사용하여 시각적으로 범위 체크하기 public float attackRange = 2; private void Move() { Vector3 dir = target.position - transform.position; float distance = dir.magnitude; dir.Normalize(); transform.rotation = Quaternion.Lerp(transform.rotation, Quaternion.LookRotation(dir), 5 * Time.deltaTime); cc.SimpleMove(dir * speed); // 공격 범위에 타겟이 들어오면 상태를 공격으로 전환하고 싶다 if(distance < attackRange) { m_Stat..
타겟 쪽으로 회전 및 이동 Enemy 오브젝트가 Player 오브젝트를 바라보도록 회전하고, 큐브 위에 올라가 있는 Player를 향해 자연스럽게 이동 및 회전할 수 있는 코드를 구현하였다. private void Move() { // 타겟 쪽으로 이동 Vector3 dir = target.position - transform.position; dir.Normalize(); dir.y = 0; // 타겟 쪽으로 회전 // transform.LookAt(target); // transform.forward = Vector3.Lerp(transform.forward, dir, 5 * Time.deltaTime); transform.rotation = Quaternion.Lerp(transform.rotati..
Layer와 Tag 비교 게임 오브젝트를 비교하는 방법은 Layer과 Tag 설정이 있다. Layer는 총 32개로 정의되어 있다. 32라는 숫자는 int형 즉, 비트형을 가져온다. 여기서 비트 연산으로 layer 처리를 해주는 개념으로 이해하면 된다. 비트형이기 때문에 0과 1로 입력/출력 값을 결정해준다. Tag와 Layer은 다음과 같이 사용할 수 있다. 전부 다 같은 동작이 실행되고 각 코드마다 약간의 성능차이는 있다. if(collision.gameObject.CompareTag("Player")) // 전부 다 같은 개념 if(collision.gameObject.name.Contains("Player")) if(collision,gameObject.tag == "Player") if(coll..
void TestFunc() { } void TestFunc(float a) { } void TestFunc(float a, float b) { } TestFunc(); TestFunc(10); TestFunc(10, 200); 함수의 오버로딩과 관련하여 디폴트 값인 TestFunc()와 매개변수 인자값을 넣어준 함수들을 다음과 같이 실행할 수 있다. 하지만 이런 경우, TestFunc() 함수의 파라미터 값이 안맞기 때문에 오류가 생긴다. 이럴 때는 파라미터에 인자 값을 할당해주므로서 오류를 해결할 수 있다. TestFunc() 함수는 기본적으로 float a = 0 과 float b = 10 이라는 인자 값을 가지게 되고, TestFunc(10)을 호출하면 float a = 10, float b = ..
https://www.youtube.com/watch?v=sU4tT15I1HI 레벨 디자인에 대한 기획 및 제작 프로세스는 다음과 같다. 유니티에서는 2021년 버전부터 프로빌더(ProBuilder)가 들어가 있기 때문에 터레인 제작에 활용할 수 있다. 기획 - > 동선(White Boxing) -> 애셋 교체 - > 디테일 White Boxing은 기본적인 박스 만으로 레벨에 필요한 요소를 간략하게 구성하는 것이다. 박스를 배치하므로서 캐릭터 동선 체크도 함께 수행한다. 조명 배치도 유저의 동선 유도에 필요하기 때문에 레벨 디자인의 중요한 요소이다.