2024/12/19 3

[Retro유니티] 다형성 및 Action, Delegate를 통한 Event 구현: Virtual/Abstract/Interface 차이

다형성적 AI 및 Player 모두 포함하여 공유하는 기능을 가진, LivingEntity 클래스를 만들자.느슨한 커플링을 사용해서, 어느 자식클래스인지 구체적으로 모르더라도, 부모가 가진 메서드면 호출하게끔 구현할 수 있다. 다형성 사용 패턴- C#에서 부모클래스의 함수는 base로 접근할 수 있다. 이 정도만 추가로 숙지하면 될듯하다. LivingEntity ClassMonoBehaviour 및 IDamageable을 상속체력체력회복공격당할수있음살거나 죽는 상태가 존재함.using System;using UnityEngine;// 생명체로서 동작할 게임 오브젝트들을 위한 뼈대를 제공// 체력, 데미지 받아들이기, 사망 기능, 사망 이벤트를 제공public class LivingEntity : Mono..

[Retro유니티] Shooter 구현 - IK를 사용한 손/발 위치와 총 위치 <-> Animation 대응

PlayerShooter 스크립트를 만들자.1. 입력에 따라 총을 쏘거나 재장전한다.2. 손은 항상 총의 손잡이에 위치하게 한다. -> IK를 사용해야 한다. IK란?먼저 FK를 알아야 한다.FK란?Forward Kinematics 의 줄임말이다.부모 joint에서 자식 joint 순서로 움직임을 적용한다.FK로 물건을 집으면1. 어깨를 움직인다2. 팔을 움직인다3. 손을 움직인다. 순으로 동작한다.FK로 물건을 집는다면, 손의 위치는 누적계산된 최종결과이기 때문에, 손의 위치를 먼저 정하고 거기에 맞춰서 애니메이션을 변형할 수 없기 때문에, 손의 위치로 물건을 순간이동해야 한다. 반대로, IK는 자식 joint 에서 부모 joint 순서로 움직임을 적용하는 것이다. Inverse Kinematics1...

[Retro유니티] Gun 스크립트 - Coroutine을 사용한 Shot, Reload 구현

Gun과 관련된 메서드를 구현한다. 함수Awake(): 사용할 컴포넌트를 가져온다.OnEnable(): 총의 상태를 초기화한다. 컴포넌트가 활성화될 대마다 매번 실행된다.Fire(): Shot()을 안전하게 감싼다.Shot(): 실제 발사처리를 한다.ShotEffect(): 발사효과를 재생하고, 탄 궤적을 그린다.Reload(): 재장전을 한다. 실패시 false 반환.ReloadRoutine(): 재장전이 가능할 때만 Reolad를 호출한다. IEnumerator 를 반환하는데, 이들은 코루틴 메서드이다. 참고) enum flag를 사용하면, 하나의 enum 변수가 2개 이상의 값을 가질 수 있다. 코루틴번쩍이는 탄알궤적을 ShotEffect() 메서드가 구현해야하는데, 그러기 위해서는1. 라인렌더러 ..