
🕹️ 실습 (CombatSystsemGame)애니메이션레이어 생성 후 Weight 1로(이전 실습과 다르게 콜라이더를 코드로 활성화, 비활성)public class CombatController : MonoBehaviour{ MeeleFighter meeleFighter; private void Awake() { meeleFighter = GetComponent(); } private void Update() { if (Input.GetMouseButtonDown(0)) { meeleFighter.TryAttack(); } }}public enum AttackState{ Idle, Wi..

🕹️ 실습 (CombatSystsemGame)카메라public class CameraController : MonoBehaviour{ [SerializeField] Transform followTarget; [SerializeField] float rotationSpeed = 2f; [SerializeField] float distance = 5; [SerializeField] float minVerticalAngle = -45; [SerializeField] float maxVerticalAngle = 45; [SerializeField] Vector2 framingOffset; float rotationX; float rotationY; private..

💻 Unity최적화C# 코드 최적화기법설명예시1. GetComponent 캐싱GetComponent는 비용이 크므로 반복 호출하지 말고 변수에 저장private Rigidbody rb;\\nvoid Start() { rb = GetComponent(); }2. Update 최소화매 프레임 실행되는 Update() 함수 내 로직은 최소화void Update() { if (needToUpdate) DoWork(); }3. Invoke/Coroutine 적절 활용타이머나 반복 작업에 InvokeRepeating 또는 Coroutine 사용StartCoroutine(MyRoutine());4. Find 함수 사용 지양GameObject.Find, FindObjectOfType는 느리므로 미리 참조 저장[Ser..

Sword 스킬을 구현할 때 따라가기에 바빠서 수업중엔 제대로 이해하지 못했다.. 다시 여기에 정리하면서 이해했다…💻 UnityNetcodeUnity에서 멀티플레이어 게임을 개발할 때 사용하는 네트워킹 솔루션으로 로컬에서 동작하는 서버-클라이언트 구조를 쉽게 구현할 수 있게 한다NetworkManager서버와 클라이언트, 연결 관리NetworkObject네트워크에서 동기화되는 오브젝트NetworkBehaviour네트워크 동작을 담당하는 스크립트ServerRPC클라이언트 → 서버 호출 함수ClientRPC서버 → 클라이언트 호출 함수Ownership오브젝트의 주인(Owner) 개념🕹️ 실습 (Netcode)https://assetstore.unity.com/packages/essentials/start..

🕹️ 실습 (2D 횡스크롤 스테이트머신)Skillpublic class SkillManager : MonoBehaviour{ public static SkillManager Instance; public DashSkill dash { get; private set; } public CloneSkill clone { get; private set; } public SwordSkill sword { get; private set; } private void Awake() { if (Instance != null) { Destroy(Instance); } else { Inst..

🕹️ 실습 (2D 횡스크롤 스테이트머신)Attack// Entity.cs[Header("Collision Info")]public Transform attackCheck;public float attackCheckRadius;protected virtual void OnDrawGizmos(){ Gizmos.DrawWireSphere(attackCheck.position, attackCheckRadius);}public virtual void TakeDamage(){ Debug.Log($"{gameObject} gets damage");}// PlayerAnimationTriggers.csprivate void AttackTrigger(){ Collider2D[] colliders = P..

🕹️ 실습 (2D 횡스크롤 스테이트머신)Enemy StateMachine// Idle과 MoveState가 SkeletonGroundedState을 상속받음public class SkeletonGroundedState : EnemyState{ protected Skeleton enemy; protected Transform player; public SkeletonGroundedState(Enemy _enemyBase, EnemyStateMachine _stateMachine, string _animBoolName, Skeleton _enemy) : base(_enemyBase, _stateMachine, _animBoolName) { enemy = _en..

🕹️ 실습 (2D 횡스크롤 스테이트머신)Background Parallaxpublic class ParallaxBackground : MonoBehaviour{ private Camera cam; [SerializeField] private float parallaxEffect; private float xPosition; private float length; void Start() { cam = Camera.main; length = GetComponent().bounds.size.x; xPosition = transform.position.x; } void Update() { float distanc..