#31 Assault mode change with camera
This commit is contained in:
parent
59233a4f13
commit
ead1f1c1ab
File diff suppressed because it is too large
Load Diff
@ -18,7 +18,7 @@ namespace BlueWaterProject
|
||||
public int rotateSpeed = 10;
|
||||
|
||||
[Required("습격모드 카메라를 넣어주세요.")]
|
||||
public CinemachineVirtualCamera assaultCam;
|
||||
[field: SerializeField] public CinemachineFreeLook AssaultCam { get; set; }
|
||||
|
||||
[Required("보트내부 카메라를 넣어주세요.")]
|
||||
public CinemachineVirtualCamera inShipCam;
|
||||
@ -45,11 +45,12 @@ namespace BlueWaterProject
|
||||
{
|
||||
TakeCamMovement();
|
||||
DredgeCamRotate();
|
||||
AssaultCamRotate();
|
||||
}
|
||||
|
||||
public void CamAssaultMode()
|
||||
{
|
||||
assaultCam.Priority = 1;
|
||||
AssaultCam.Priority = 1;
|
||||
dredgeCam.Priority = 0;
|
||||
inShipCam.Priority = 0;
|
||||
}
|
||||
@ -57,7 +58,7 @@ namespace BlueWaterProject
|
||||
public void CamDredgeMode()
|
||||
{
|
||||
dredgeCam.Priority = 1;
|
||||
assaultCam.Priority = 0;
|
||||
AssaultCam.Priority = 0;
|
||||
inShipCam.Priority = 0;
|
||||
}
|
||||
|
||||
@ -65,7 +66,7 @@ namespace BlueWaterProject
|
||||
{
|
||||
inShipCam.Priority = 1;
|
||||
dredgeCam.Priority = 0;
|
||||
assaultCam.Priority = 0;
|
||||
AssaultCam.Priority = 0;
|
||||
}
|
||||
|
||||
private void TakeCamMovement()
|
||||
@ -92,7 +93,7 @@ namespace BlueWaterProject
|
||||
Quaternion.Euler(takeAimCam.transform.rotation.eulerAngles.x, yRotation, takeAimCam.transform.rotation.eulerAngles.z);
|
||||
}
|
||||
|
||||
public void DredgeCamRotate()
|
||||
private void DredgeCamRotate()
|
||||
{
|
||||
if (Input.GetMouseButtonDown(1))
|
||||
{
|
||||
@ -109,5 +110,33 @@ namespace BlueWaterProject
|
||||
dredgeCamOrbitalTransposer.m_RecenterToTargetHeading.m_enabled = true;
|
||||
}
|
||||
}
|
||||
|
||||
private void AssaultCamRotate()
|
||||
{
|
||||
if (Input.GetMouseButtonDown(1))
|
||||
{
|
||||
//AssaultCam의 X Axis의 Speed를 변경
|
||||
AssaultCam.m_XAxis.m_MaxSpeed = 150;
|
||||
AssaultCam.m_XAxis.m_InputAxisName = "Mouse X";
|
||||
|
||||
//AssaultCam의 Y Axis의 Speed를 변경
|
||||
AssaultCam.m_YAxis.m_MaxSpeed = 2;
|
||||
AssaultCam.m_YAxis.m_InputAxisName = "Mouse Y";
|
||||
|
||||
AssaultCam.m_RecenterToTargetHeading.m_enabled = false;
|
||||
}
|
||||
else if (Input.GetMouseButtonUp(1))
|
||||
{
|
||||
//AssaultCam의 X Axis의 Speed를 원래대로
|
||||
AssaultCam.m_XAxis.m_MaxSpeed = 0;
|
||||
AssaultCam.m_XAxis.m_InputAxisName = "";
|
||||
|
||||
//AssaultCam의 Y Axis의 Speed를 원래대로
|
||||
AssaultCam.m_YAxis.m_MaxSpeed = 0;
|
||||
AssaultCam.m_YAxis.m_InputAxisName = "";
|
||||
|
||||
AssaultCam.m_RecenterToTargetHeading.m_enabled = true;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
@ -1,4 +1,5 @@
|
||||
using System.Collections.Generic;
|
||||
using Cinemachine;
|
||||
using Sirenix.OdinInspector;
|
||||
using UnityEngine;
|
||||
|
||||
@ -19,6 +20,8 @@ namespace BlueWaterProject
|
||||
|
||||
[field: SerializeField] public List<Transform> TargetAllList { get; private set; }
|
||||
|
||||
[field: SerializeField] public CinemachineFreeLook IslandCam { get; private set; }
|
||||
|
||||
public IslandInfo()
|
||||
{
|
||||
IslandName = null;
|
||||
@ -26,15 +29,17 @@ namespace BlueWaterProject
|
||||
UnitList = null;
|
||||
EnemyList = null;
|
||||
TargetAllList = null;
|
||||
IslandCam = null;
|
||||
}
|
||||
|
||||
public IslandInfo(string islandName, List<Transform> houseList, List<EnemyUnit> unitList, List<Transform> enemyList, List<Transform> targetAllList)
|
||||
public IslandInfo(string islandName, List<Transform> houseList, List<EnemyUnit> unitList, List<Transform> enemyList, List<Transform> targetAllList, CinemachineFreeLook islandCam)
|
||||
{
|
||||
IslandName = islandName;
|
||||
HouseList = houseList;
|
||||
UnitList = unitList;
|
||||
EnemyList = enemyList;
|
||||
TargetAllList = targetAllList;
|
||||
IslandCam = islandCam;
|
||||
}
|
||||
|
||||
#endregion
|
||||
@ -109,6 +114,8 @@ namespace BlueWaterProject
|
||||
{
|
||||
TargetAllList.Add(house);
|
||||
}
|
||||
|
||||
IslandCam = transform.Find("IslandCam").GetComponent<CinemachineFreeLook>();
|
||||
}
|
||||
|
||||
public void RemoveListElement(List<Transform> list, Transform element)
|
||||
|
@ -45,25 +45,45 @@ namespace BlueWaterProject
|
||||
[field: SerializeField]
|
||||
public List<Canon> Canons { get; private set; } = new (GlobalValue.MAX_CANON_COUNT);
|
||||
|
||||
public bool IsAssaultMode { get; set; }
|
||||
public bool IsInShipMode { get; set; }
|
||||
public bool IsDredgeMode { get; set; }
|
||||
public bool IsTakeAim { get; set; }
|
||||
[field: Title("Mode")]
|
||||
[field: SerializeField] public bool IsAssaultMode { get; set; }
|
||||
[field: SerializeField] public bool IsInShipMode { get; set; }
|
||||
[field: SerializeField] public bool IsDredgeMode { get; set; }
|
||||
[field: SerializeField] public bool IsTakeAim { get; set; }
|
||||
|
||||
[Title("Interaction")]
|
||||
public bool IsIslandInteraction { get; set; }
|
||||
private float rayLength;
|
||||
private LayerMask groundLayer;
|
||||
|
||||
private void Init()
|
||||
{
|
||||
character = transform.Find("Character").gameObject;
|
||||
rb = GetComponent<Rigidbody>();
|
||||
GetComponentsInChildren(Canons);
|
||||
|
||||
rayLength = 15f;
|
||||
groundLayer = LayerMask.GetMask("Ground");
|
||||
}
|
||||
|
||||
#region Unity Function
|
||||
|
||||
private void OnDrawGizmosSelected()
|
||||
{
|
||||
Gizmos.color = Color.red;
|
||||
Gizmos.DrawWireSphere(transform.position, GlobalValue.RADAR_RANGE);
|
||||
}
|
||||
|
||||
private void Awake()
|
||||
{
|
||||
Init();
|
||||
}
|
||||
|
||||
private void Start()
|
||||
{
|
||||
SwitchDredgeMode(true);
|
||||
}
|
||||
|
||||
private void FixedUpdate()
|
||||
{
|
||||
HandleMovement();
|
||||
@ -74,6 +94,7 @@ namespace BlueWaterProject
|
||||
FindInRadarRange();
|
||||
FilterInCameraObjects();
|
||||
LookAtTarget();
|
||||
Raycast8Direction();
|
||||
}
|
||||
|
||||
#endregion
|
||||
@ -119,6 +140,12 @@ namespace BlueWaterProject
|
||||
}
|
||||
}
|
||||
|
||||
private void StopShipMovement()
|
||||
{
|
||||
rb.velocity = Vector3.zero;
|
||||
rb.angularVelocity = Vector3.zero;
|
||||
}
|
||||
|
||||
#endregion
|
||||
|
||||
#region AssaultMode/DreadgeMode Switch
|
||||
@ -134,6 +161,7 @@ namespace BlueWaterProject
|
||||
{
|
||||
SwitchTakeAim(false);
|
||||
SwitchInShipMode(false);
|
||||
SwitchDredgeMode(false);
|
||||
GameManager.Inst.CameraController.CamAssaultMode();
|
||||
UiManager.Inst.CardLayoutGroupAnimator.Play();
|
||||
IsAssaultMode = true;
|
||||
@ -145,6 +173,22 @@ namespace BlueWaterProject
|
||||
IsAssaultMode = false;
|
||||
}
|
||||
}
|
||||
|
||||
private void SwitchDredgeMode(bool isOn)
|
||||
{
|
||||
if (isOn)
|
||||
{
|
||||
SwitchTakeAim(false);
|
||||
SwitchAssaultMode(false);
|
||||
SwitchInShipMode(false);
|
||||
GameManager.Inst.CameraController.CamDredgeMode();
|
||||
IsDredgeMode = true;
|
||||
}
|
||||
else if (IsDredgeMode)
|
||||
{
|
||||
IsDredgeMode = false;
|
||||
}
|
||||
}
|
||||
|
||||
#endregion
|
||||
|
||||
@ -172,13 +216,15 @@ namespace BlueWaterProject
|
||||
|
||||
private void OnInteraction(InputValue value) //F
|
||||
{
|
||||
|
||||
if (!IsIslandInteraction) return;
|
||||
SwitchAssaultMode(true);
|
||||
UiManager.Inst.DefaultInteractionOnOff(false);
|
||||
StopShipMovement();
|
||||
}
|
||||
|
||||
private void OnInteractionHold(InputValue value) //F Hold
|
||||
{
|
||||
SwitchInShipMode(!IsInShipMode);
|
||||
|
||||
}
|
||||
|
||||
private void SwitchInShipMode(bool isOn)
|
||||
@ -187,6 +233,7 @@ namespace BlueWaterProject
|
||||
{
|
||||
SwitchTakeAim(false);
|
||||
SwitchAssaultMode(false);
|
||||
SwitchDredgeMode(false);
|
||||
GameManager.Inst.CameraController.CamInShipMode();
|
||||
IsInShipMode = true;
|
||||
}
|
||||
@ -217,6 +264,7 @@ namespace BlueWaterProject
|
||||
{
|
||||
SwitchAssaultMode(false);
|
||||
SwitchInShipMode(false);
|
||||
SwitchDredgeMode(false);
|
||||
GameManager.Inst.CameraController.CamTakeAim(true);
|
||||
Cursor.visible = false;
|
||||
Cursor.lockState = CursorLockMode.Locked;
|
||||
@ -288,5 +336,54 @@ namespace BlueWaterProject
|
||||
}
|
||||
|
||||
#endregion
|
||||
|
||||
#region Raycast 8 Direction
|
||||
|
||||
private void Raycast8Direction()
|
||||
{
|
||||
if (!IsDredgeMode) return;
|
||||
|
||||
Vector3[] directions =
|
||||
{
|
||||
transform.forward,
|
||||
-transform.forward,
|
||||
transform.right,
|
||||
-transform.right,
|
||||
transform.forward + transform.right,
|
||||
transform.forward - transform.right,
|
||||
-transform.forward + transform.right,
|
||||
-transform.forward - transform.right
|
||||
};
|
||||
|
||||
Vector3 halfExtents = new Vector3(5, 5, 5); // 박스 크기의 절반을 나타내는 벡터값을 설정합니다.
|
||||
var isOn = false;
|
||||
|
||||
foreach (Vector3 dir in directions)
|
||||
{
|
||||
RaycastHit hit;
|
||||
|
||||
if (Physics.BoxCast(transform.position, halfExtents, dir, out hit, Quaternion.identity, rayLength, groundLayer))
|
||||
{
|
||||
isOn = true;
|
||||
|
||||
var islandInfo = hit.transform.parent.parent.GetComponent<IslandInfo>();
|
||||
|
||||
if (GameManager.Inst.CameraController.AssaultCam != islandInfo.IslandCam)
|
||||
GameManager.Inst.CameraController.AssaultCam = islandInfo.IslandCam;
|
||||
|
||||
// 박스가 Ground 레이어에 닿았을 때 빨간색으로 표시
|
||||
Debug.DrawRay(transform.position, dir * rayLength, Color.red);
|
||||
IsIslandInteraction = true;
|
||||
break;
|
||||
}
|
||||
// 박스가 Ground 레이어에 닿지 않았을 때 녹색으로 표시
|
||||
Debug.DrawRay(transform.position, dir * rayLength, Color.green);
|
||||
IsIslandInteraction = false;
|
||||
}
|
||||
|
||||
UiManager.Inst.DefaultInteractionOnOff(isOn);
|
||||
}
|
||||
|
||||
#endregion
|
||||
}
|
||||
}
|
@ -29,6 +29,9 @@ namespace BlueWaterProject
|
||||
[Title("Enemy Marker")]
|
||||
private Image enemyMarker; // 적을 표시할 마커 (Image)
|
||||
private Transform enemyTarget; // 타겟 (적)
|
||||
|
||||
[Title("InteractionUI")]
|
||||
private Transform defaultInteraction;
|
||||
|
||||
|
||||
private void Init()
|
||||
@ -44,6 +47,8 @@ namespace BlueWaterProject
|
||||
|
||||
enemyMarker = transform.Find("EnemyMarker").GetComponent<Image>();
|
||||
enemyMarker.sprite = DataManager.Inst.enemyMarker;
|
||||
|
||||
defaultInteraction = transform.Find("DefaultInteraction");
|
||||
}
|
||||
|
||||
protected override void OnAwake()
|
||||
@ -163,5 +168,10 @@ namespace BlueWaterProject
|
||||
{
|
||||
radar.gameObject.SetActive(isOn);
|
||||
}
|
||||
|
||||
public void DefaultInteractionOnOff(bool isOn)
|
||||
{
|
||||
defaultInteraction.gameObject.SetActive(isOn);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
@ -0,0 +1,7 @@
|
||||
fileFormatVersion: 2
|
||||
guid: a55ee4efaad27d948ba5f03fc6d7bc80
|
||||
DefaultImporter:
|
||||
externalObjects: {}
|
||||
userData:
|
||||
assetBundleName:
|
||||
assetBundleVariant:
|
@ -0,0 +1,7 @@
|
||||
fileFormatVersion: 2
|
||||
guid: ed9b95dc6ed6d0647ad7f1a8f305385d
|
||||
DefaultImporter:
|
||||
externalObjects: {}
|
||||
userData:
|
||||
assetBundleName:
|
||||
assetBundleVariant:
|
@ -0,0 +1,7 @@
|
||||
fileFormatVersion: 2
|
||||
guid: 4ff1f29eab234cf4490d9bb383892c44
|
||||
DefaultImporter:
|
||||
externalObjects: {}
|
||||
userData:
|
||||
assetBundleName:
|
||||
assetBundleVariant:
|
@ -0,0 +1,7 @@
|
||||
fileFormatVersion: 2
|
||||
guid: f5789d13135b86645a366dac6583d1cd
|
||||
DefaultImporter:
|
||||
externalObjects: {}
|
||||
userData:
|
||||
assetBundleName:
|
||||
assetBundleVariant:
|
@ -0,0 +1,7 @@
|
||||
fileFormatVersion: 2
|
||||
guid: 3643c0d76ec153646b1203880bfb64ed
|
||||
DefaultImporter:
|
||||
externalObjects: {}
|
||||
userData:
|
||||
assetBundleName:
|
||||
assetBundleVariant:
|
@ -0,0 +1,7 @@
|
||||
fileFormatVersion: 2
|
||||
guid: 3d7c4217783978e4abe6496ac71eee94
|
||||
DefaultImporter:
|
||||
externalObjects: {}
|
||||
userData:
|
||||
assetBundleName:
|
||||
assetBundleVariant:
|
@ -0,0 +1,7 @@
|
||||
fileFormatVersion: 2
|
||||
guid: 697b6e7dea1fde146b7e3e5cf3ed9e9f
|
||||
DefaultImporter:
|
||||
externalObjects: {}
|
||||
userData:
|
||||
assetBundleName:
|
||||
assetBundleVariant:
|
@ -0,0 +1,7 @@
|
||||
fileFormatVersion: 2
|
||||
guid: 078b8f13a17171b49892ad10426d5af0
|
||||
DefaultImporter:
|
||||
externalObjects: {}
|
||||
userData:
|
||||
assetBundleName:
|
||||
assetBundleVariant:
|
@ -0,0 +1,7 @@
|
||||
fileFormatVersion: 2
|
||||
guid: f9406a33814af9c47b352e77f079d798
|
||||
DefaultImporter:
|
||||
externalObjects: {}
|
||||
userData:
|
||||
assetBundleName:
|
||||
assetBundleVariant:
|
@ -0,0 +1,7 @@
|
||||
fileFormatVersion: 2
|
||||
guid: 9aacf6f3043624194bb6f6fe9a580786
|
||||
DefaultImporter:
|
||||
externalObjects: {}
|
||||
userData:
|
||||
assetBundleName:
|
||||
assetBundleVariant:
|
@ -0,0 +1,7 @@
|
||||
fileFormatVersion: 2
|
||||
guid: f4227764308e84f89a765fbf315e2945
|
||||
DefaultImporter:
|
||||
externalObjects: {}
|
||||
userData:
|
||||
assetBundleName:
|
||||
assetBundleVariant:
|
@ -0,0 +1,7 @@
|
||||
fileFormatVersion: 2
|
||||
guid: 41e59f562b69648719f2424c438758f3
|
||||
DefaultImporter:
|
||||
externalObjects: {}
|
||||
userData:
|
||||
assetBundleName:
|
||||
assetBundleVariant:
|
@ -0,0 +1,7 @@
|
||||
fileFormatVersion: 2
|
||||
guid: b044a2387a61dac41bdf204adffdce9d
|
||||
DefaultImporter:
|
||||
externalObjects: {}
|
||||
userData:
|
||||
assetBundleName:
|
||||
assetBundleVariant:
|
@ -0,0 +1,7 @@
|
||||
fileFormatVersion: 2
|
||||
guid: cd287c84e887ea24a8679e67aac7c074
|
||||
DefaultImporter:
|
||||
externalObjects: {}
|
||||
userData:
|
||||
assetBundleName:
|
||||
assetBundleVariant:
|
@ -0,0 +1,7 @@
|
||||
fileFormatVersion: 2
|
||||
guid: 5f3f53ee059b45a4d9a5b9fc75e8aea9
|
||||
DefaultImporter:
|
||||
externalObjects: {}
|
||||
userData:
|
||||
assetBundleName:
|
||||
assetBundleVariant:
|
@ -0,0 +1,7 @@
|
||||
fileFormatVersion: 2
|
||||
guid: f211254f5bfad224ba88868f2c75432c
|
||||
DefaultImporter:
|
||||
externalObjects: {}
|
||||
userData:
|
||||
assetBundleName:
|
||||
assetBundleVariant:
|
@ -0,0 +1,7 @@
|
||||
fileFormatVersion: 2
|
||||
guid: 4368c9be31b3c174dbfd80f2caf98889
|
||||
DefaultImporter:
|
||||
externalObjects: {}
|
||||
userData:
|
||||
assetBundleName:
|
||||
assetBundleVariant:
|
@ -0,0 +1,7 @@
|
||||
fileFormatVersion: 2
|
||||
guid: 617b3f1032a08c14ebfedfa340767cdf
|
||||
DefaultImporter:
|
||||
externalObjects: {}
|
||||
userData:
|
||||
assetBundleName:
|
||||
assetBundleVariant:
|
@ -0,0 +1,7 @@
|
||||
fileFormatVersion: 2
|
||||
guid: f597f19f656ba56eae4f6a3a7cc528f4
|
||||
DefaultImporter:
|
||||
externalObjects: {}
|
||||
userData:
|
||||
assetBundleName:
|
||||
assetBundleVariant:
|
@ -0,0 +1,7 @@
|
||||
fileFormatVersion: 2
|
||||
guid: 48e08dc33330d11e9d4a1b246c52e4f6
|
||||
DefaultImporter:
|
||||
externalObjects: {}
|
||||
userData:
|
||||
assetBundleName:
|
||||
assetBundleVariant:
|
@ -0,0 +1,7 @@
|
||||
fileFormatVersion: 2
|
||||
guid: ed09910c0094cb27be8f3ca264680da3
|
||||
DefaultImporter:
|
||||
externalObjects: {}
|
||||
userData:
|
||||
assetBundleName:
|
||||
assetBundleVariant:
|
@ -0,0 +1,7 @@
|
||||
fileFormatVersion: 2
|
||||
guid: cc355dd4cf1e6173beaeb22c2858cbe1
|
||||
DefaultImporter:
|
||||
externalObjects: {}
|
||||
userData:
|
||||
assetBundleName:
|
||||
assetBundleVariant:
|
Loading…
Reference in New Issue
Block a user