OldBlueWater/BlueWater/Assets/02.Scripts/SpawnController.cs
NTG_Lenovo 2bb986becb #34 #35 상세 내용 아래에 기재
+ SPUM 프리팹 회전 값 변경
  (0, 90, 0) -> (0, 0, 0)
+ 프리팹 원본 보존(씬에 Viking 따로 사용)
+ ProjectSetting Physics 수정
  Player <-> Props 충돌 추가
+ IAnimationBridge 인터페이스 추가
+ Crewmate(동료) class 추가
+ Enemy MagicOrk 추가
  Magic particleSystem 기능 추가 중
2023-10-12 15:32:02 +09:00

78 lines
2.9 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;
islandPlayer.gameObject.SetActive(true);
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;
}
}
}