OldBlueWater/BlueWater/Assets/02.Scripts/SpawnController.cs
NTG 59c4b14d1a #34 #35 InIslandPlayer, Ai 2D 베이스 변경 작업
+ SPUM 프리팹 NavMeshAgent 위치 변경, 콜라이더, Agent 크기 변경
+ SPUM에서 제공되는 NormalAnimator의 공격 모션에 Event 추가
+ Ork 프리팹 UnitRoot에 Animator Bridge 추가
+ IAiView 타겟을 검색하는 Ai 인터페이스 추가
+ IHelpCall 주변 아군에게 타겟을 공유하는 인터페이스 추가
+ 기존 02.Scripts.Ai.BehaviorTree에는 그대로 냅두고,
  02.Scripts.Ai.NewBehaviorTree 폴더를 추가하여 사용
+ Enemy의 BehaviorTree인 Minion 추가
+ InIslandPlayer의 기본 이동 구현
2023-10-12 05:26:45 +09:00

77 lines
2.8 KiB
C#

using Cinemachine;
using UnityEngine;
using UnityEngine.InputSystem;
using UnityEngine.SceneManagement;
// ReSharper disable once CheckNamespace
namespace BlueWaterProject
{
public class SpawnController : MonoBehaviour
{
private GameObject spawnPositionObj;
private CinemachineVirtualCamera cinemachineVirtualCamera;
private const string PLAYER_NAME = "Player";
private const string IN_ISLAND_PLAYER_NAME = "InIslandPlayer";
private void Start()
{
spawnPositionObj = GameObject.Find("StageMap/SpawnPosition");
if (spawnPositionObj == null)
{
print("StageMap 또는 SpawnPosition 오브젝트를 찾을 수 없습니다.");
return;
}
cinemachineVirtualCamera = GameObject.Find("Virtual Camera")?.GetComponent<CinemachineVirtualCamera>();
if (cinemachineVirtualCamera == null)
{
print("Virtual Camera 오브젝트를 찾을 수 없습니다.");
return;
}
var currentSceneName = SceneManager.GetActiveScene().name;
if (currentSceneName != "02.Main")
{
SpawnInIslandPlayer(spawnPositionObj.transform.position, GameManager.Inst.InIslandPlayer.transform.rotation);
}
}
private void SpawnInIslandPlayer(Vector3 spawnPos, Quaternion spawnRotation)
{
var islandPlayer = Instantiate(GameManager.Inst.InIslandPlayer, spawnPos, spawnRotation);
islandPlayer.name = IN_ISLAND_PLAYER_NAME;
var playerInput = islandPlayer.GetComponent<PlayerInput>();
if (playerInput == null)
{
playerInput = islandPlayer.AddComponent<PlayerInput>();
}
playerInput.actions = GameManager.Inst.PlayerAction;
var desiredActionMap = playerInput.actions.FindActionMap(PLAYER_NAME);
if (desiredActionMap == null)
{
print($"Action map named '{PLAYER_NAME}' not found in player actions!");
return;
}
playerInput.defaultActionMap = PLAYER_NAME;
if (GameManager.Inst.shipPlayer != null)
{
GameManager.Inst.shipPlayer.GetComponent<PlayerInput>().enabled = false;
}
playerInput.SwitchCurrentActionMap(PLAYER_NAME);
var inIslandPlayer = islandPlayer.GetComponent<InIslandPlayer>();
if (inIslandPlayer == null)
{
inIslandPlayer = islandPlayer.AddComponent<InIslandPlayer>();
}
cinemachineVirtualCamera.Follow = islandPlayer.transform;
cinemachineVirtualCamera.LookAt = islandPlayer.transform;
}
}
}