본문 바로가기

분류 전체보기132

[Unity] 보스 키우기 (6) - 완성 팀 노션 Z1존 ‘승도’ | Notion teamsparta.notion.site  플레이 영상 2024. 6. 26.
[Unity] 보스 키우기 (5) - 버프 몬스터 EnemyBuffState.csusing System.Collections.Generic;using UnityEngine;public class EnemyBuffState : CharacterBaseState{ private EnemyStateMachine eStateMachine; private Enemy enemy; private bool bIsPlayed = false; private bool bIsBuffed = false; public EnemyBuffState(CharacterStateMachine stateMachine) : base(stateMachine) { eStateMachine = stateMachine as EnemyStateMachin.. 2024. 6. 25.
[Unity] 보스 키우기 (4) - 원거리 몬스터 위와 같이 총알을 오브젝트 풀에서 생성해준 후위치를 설정해주었다. 총알 생성 -> OnEnable -> 위치 할당 -> Start순서로 코드가 실행되어 아래와 같이 코드를 짜 해결하였다.  Bullet.csusing System;using UnityEngine;public class Bullet : PoolObject{ public event Action OnHitBullet; [SerializeField] private float bulletSpeed; [SerializeField] private float bulletLifeTime; private Vector3 startPos; private Vector3 targetPos; private Vector3 bulletD.. 2024. 6. 23.
[Unity] 보스 키우기 (3) - 코루틴 최적화 캐릭터가 죽었을 때 Die 애니메이션을 실행하고해당 애니메이션이 끝나면 오브젝트를 꺼주려고 한다. 처음엔IEnumerator WaitForDieAnim(){ Animator.SetTrigger(AnimationData.DieParameterHash); while (!Animator.GetCurrentAnimatorStateInfo(0).IsTag("Die")) yield return null; while (Animator.GetCurrentAnimatorStateInfo(0).normalizedTime  다음과 같이 Die 태그를 가진 애니메이션이 실행되고 해당 애니메이션이 끝나는 조건을 While 문을 사용해서 판별해 주었으나비효율적인 방법이었다. 알고보니 현재 재생 중인 애니메이션의 .. 2024. 6. 21.
[Unity] 보스 키우기 게임 (2) - FSM 이번 프로젝트에서는 유한 상태 머신( FSM )을 사용했다. Player와 Enemy 둘 다 움직이거나 공격하는 부분에서 공통적인 부분이 많으므로 Character를 상속받아 구현하였다. 구조CharacterStateMachine을 상속받는 PlayerStateMachine, EnemyStateMachine이 존재하고각 머신들은 플레이어의 State, Enemy의 State를 생성자로 가진다. 자식 머신들은 공통적으로 본인의 데이터(CharacterSO)와 스크립트(Character), 그리고 공격 대상의 Health 스크립트를 가지므로 CharacterStateMachine에서 선언해주었다. public class EnemyStateMachine : CharacterStateMachine{ pub.. 2024. 6. 20.
[Unity] 보스 키우기 게임 (1) - 기획 오늘은 기획을 했다 (12시간 걸림) 내가 이번에 맡은 일은 적 구현이다 내일부터 화이팅! 2024. 6. 19.
[Unity] HpBar 방향 수정 몬스터의 HP바가 시점이 바뀌더라도 항상 카메라를 쳐다보도록 구현하고 싶었다.그런데 코드를 짜보니 HP바가 위아래, 좌우로 불안정하게 흔들리는 현상이 발생했다.public class HPBarUI : MonoBehaviour{ [SerializeField] private GameObject hpBar; private Camera mainCamera; void Start() { mainCamera = Camera.main; } void Update() { RotateTowardsCamera(); } void RotateTowardsCamera() { Vector3 direction = (mainCamera.tran.. 2024. 6. 18.
[Unity] 참새의 모험 (2) - 애니메이션 속도 조절 공속이 바뀔 때마다 참새의 공격 모션도 같이 빨라지게 구현하려고 한다.애니메이션의 속도를 조절하는 방법은 다음과 같다.  1. Animator.Speed로 조절Animator animator;private void Awake(){ animator = GetComponent();}public void SetAnimSpeed(){ animator.speed = 1;} 예시로, 걷거나 뛸 때 같은 애니메이션 클립을 사용한다면 플레이어의 속도를 animator.speed = 현재 속도; 이렇게 조절해줄 수 있다.  2. 애니메이션 Inspector창에서 직접 변경 애니메이션 컨트롤러에서 State를 눌러 나타나는 Inspector창에서 Speed 값을 임의로 지정할 수 있다.이렇게 변경하면 해당 클립.. 2024. 6. 18.
[Unity] 참새의 모험 (1) - 무한 맵 생성 게임 화면 플레이어의 게임 화면에서 맵이 끊기지 않고 무한 맵처럼 보이게 만드려고 한다. 위의 사진은 내가 구성한 맵! 초록색 부분에서 게임이 시작빨간색 부분에 도달하면 전투 진행파란 부분에서 맵을 생성 다음과 같이 게임을 기획했고,FSM (유한 상태 머신) 기법 을 사용했다. 초록색 부분  Ground State -> Walk State빨간색 부분 Attack State -> Base Attack State파란색 부분  Ground State -> Run State 이렇게 구현하려면 맵에서 플레이어가 특정 위치를 지남을 코드에서 판단해주어야 했다.내가 생각한 방법은 두 가지다. 1. Update 문에서 Z좌표를 계산하여 플레이어의 위치 판별->  동일한 맵이 재생성되므로 맵의 길이는 일정하기 때문에 이.. 2024. 6. 17.