Multi-Floors Visibility

MultiFloors
Sascha 2023-08-21 16:46:42 +07:00
parent 9b78768a79
commit 7a789484f9
19 changed files with 204 additions and 10 deletions

@ -11,6 +11,7 @@ GameObject:
- component: {fileID: 1448231662597988608}
- component: {fileID: 4569254719215735236}
- component: {fileID: 7599129139086020475}
- component: {fileID: 4641926184230923945}
m_Layer: 0
m_Name: Barrel
m_TagString: Untagged
@ -69,6 +70,19 @@ BoxCollider:
serializedVersion: 3
m_Size: {x: 1.2, y: 1.2, z: 1.2}
m_Center: {x: 0, y: 0.6, z: 0}
--- !u!114 &4641926184230923945
MonoBehaviour:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 11884445617071955}
m_Enabled: 1
m_EditorHideFlags: 0
m_Script: {fileID: 11500000, guid: 5a5a73cbbbae15cd2acb85efcfc98557, type: 3}
m_Name:
m_EditorClassIdentifier:
floorHeightOffset: 2
--- !u!1001 &4388907659789365520
PrefabInstance:
m_ObjectHideFlags: 0

@ -12,6 +12,7 @@ GameObject:
- component: {fileID: 4963116155799127347}
- component: {fileID: 1238427848934008979}
- component: {fileID: 711517454325130744}
- component: {fileID: 4788480107850049370}
m_Layer: 8
m_Name: Column
m_TagString: Untagged
@ -26,13 +27,13 @@ Transform:
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 2703911731203012470}
serializedVersion: 2
m_LocalRotation: {x: 0, y: -0, z: -0, w: 1}
m_LocalPosition: {x: 3.299621, y: 0, z: 7.631243}
m_LocalScale: {x: 2.5, y: 1, z: 2.5}
m_ConstrainProportionsScale: 0
m_Children: []
m_Father: {fileID: 0}
m_RootOrder: -1
m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
--- !u!33 &4963116155799127347
MeshFilter:
@ -108,3 +109,16 @@ MeshCollider:
m_Convex: 0
m_CookingOptions: 30
m_Mesh: {fileID: 4300000, guid: b45e496b386039141af15f243dd3ac22, type: 3}
--- !u!114 &4788480107850049370
MonoBehaviour:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 2703911731203012470}
m_Enabled: 1
m_EditorHideFlags: 0
m_Script: {fileID: 11500000, guid: 5a5a73cbbbae15cd2acb85efcfc98557, type: 3}
m_Name:
m_EditorClassIdentifier:
floorHeightOffset: 2

@ -11,6 +11,7 @@ GameObject:
- component: {fileID: 9142444727976197465}
- component: {fileID: 7802226090513137756}
- component: {fileID: 9112269570178995488}
- component: {fileID: 7022040483435700212}
m_Layer: 8
m_Name: Crate
m_TagString: Untagged
@ -69,6 +70,19 @@ MonoBehaviour:
m_EditorClassIdentifier:
crateDestroyedPrefab: {fileID: 9142444727976197465, guid: 603b90faed6758ad5af34fed4418f695,
type: 3}
--- !u!114 &7022040483435700212
MonoBehaviour:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 6742052861145951612}
m_Enabled: 1
m_EditorHideFlags: 0
m_Script: {fileID: 11500000, guid: 5a5a73cbbbae15cd2acb85efcfc98557, type: 3}
m_Name:
m_EditorClassIdentifier:
floorHeightOffset: 2
--- !u!1001 &5886015247612728549
PrefabInstance:
m_ObjectHideFlags: 0

@ -11,6 +11,9 @@ GameObject:
- component: {fileID: 2919633612836661042}
- component: {fileID: 2294899346053832689}
- component: {fileID: 9016084264239210161}
- component: {fileID: 8130794712664898222}
- component: {fileID: -794651756643342260}
- component: {fileID: 1155120939993552524}
m_Layer: 0
m_Name: Door
m_TagString: Untagged
@ -70,6 +73,45 @@ Animator:
m_AllowConstantClipSamplingOptimization: 1
m_KeepAnimatorStateOnDisable: 0
m_WriteDefaultValuesOnDisable: 0
--- !u!114 &8130794712664898222
MonoBehaviour:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 6801323546823109225}
m_Enabled: 1
m_EditorHideFlags: 0
m_Script: {fileID: 11500000, guid: 5a5a73cbbbae15cd2acb85efcfc98557, type: 3}
m_Name:
m_EditorClassIdentifier:
floorHeightOffset: 2
--- !u!114 &-794651756643342260
MonoBehaviour:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 6801323546823109225}
m_Enabled: 1
m_EditorHideFlags: 0
m_Script: {fileID: 11500000, guid: 5a5a73cbbbae15cd2acb85efcfc98557, type: 3}
m_Name:
m_EditorClassIdentifier:
floorHeightOffset: 2
--- !u!114 &1155120939993552524
MonoBehaviour:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 6801323546823109225}
m_Enabled: 1
m_EditorHideFlags: 0
m_Script: {fileID: 11500000, guid: 5a5a73cbbbae15cd2acb85efcfc98557, type: 3}
m_Name:
m_EditorClassIdentifier:
floorHeightOffset: 2
--- !u!1001 &6683728779329086228
PrefabInstance:
m_ObjectHideFlags: 0

@ -10,6 +10,7 @@ GameObject:
m_Component:
- component: {fileID: 6671201164988202032}
- component: {fileID: 7062504999363291450}
- component: {fileID: 4518024820338421376}
m_Layer: 0
m_Name: InteractSphere
m_TagString: Untagged
@ -50,6 +51,19 @@ MonoBehaviour:
- {fileID: 2100000, guid: cf2fa3f6570d6e6a199730979f1d7080, type: 2}
meshRenderer: {fileID: 1359663710931407205}
isGreen: 0
--- !u!114 &4518024820338421376
MonoBehaviour:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 6033424034875735524}
m_Enabled: 1
m_EditorHideFlags: 0
m_Script: {fileID: 11500000, guid: 5a5a73cbbbae15cd2acb85efcfc98557, type: 3}
m_Name:
m_EditorClassIdentifier:
floorHeightOffset: 2
--- !u!1 &8244872666674356924
GameObject:
m_ObjectHideFlags: 0

@ -12,6 +12,7 @@ GameObject:
- component: {fileID: 3732372307782677125}
- component: {fileID: 2228715300700879584}
- component: {fileID: 3943989928321416028}
- component: {fileID: 4080379408929934386}
m_Layer: 6
m_Name: Plane
m_TagString: Untagged
@ -107,3 +108,16 @@ BoxCollider:
serializedVersion: 3
m_Size: {x: 9.999999, y: 2.220446e-16, z: 10}
m_Center: {x: 0, y: 0, z: 0.0000000060535967}
--- !u!114 &4080379408929934386
MonoBehaviour:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 3148356769724797727}
m_Enabled: 1
m_EditorHideFlags: 0
m_Script: {fileID: 11500000, guid: 5a5a73cbbbae15cd2acb85efcfc98557, type: 3}
m_Name:
m_EditorClassIdentifier:
floorHeightOffset: 2

@ -535,6 +535,7 @@ GameObject:
- component: {fileID: -8304330001806500918}
- component: {fileID: -6548637358342564735}
- component: {fileID: 3428387880988698014}
- component: {fileID: 4437206634797512319}
m_Layer: 7
m_Name: Unit
m_TagString: Untagged
@ -718,6 +719,22 @@ MonoBehaviour:
m_Script: {fileID: 11500000, guid: da9344d67e0d590cb802aabedfabd2a9, type: 3}
m_Name:
m_EditorClassIdentifier:
--- !u!114 &4437206634797512319
MonoBehaviour:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 7515914176832744456}
m_Enabled: 1
m_EditorHideFlags: 0
m_Script: {fileID: 11500000, guid: 5a5a73cbbbae15cd2acb85efcfc98557, type: 3}
m_Name:
m_EditorClassIdentifier:
floorHeightOffset: 2
dynamicFloorPosition: 1
ignorRendererList:
- {fileID: 3170260046977714593}
--- !u!1 &7904759459253143674
GameObject:
m_ObjectHideFlags: 0

@ -12,6 +12,7 @@ GameObject:
- component: {fileID: 462218732848497293}
- component: {fileID: 5045826003362081950}
- component: {fileID: 695854764090121989}
- component: {fileID: 6666505401970889560}
m_Layer: 8
m_Name: Wall
m_TagString: Untagged
@ -26,13 +27,13 @@ Transform:
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 3438048684508788708}
serializedVersion: 2
m_LocalRotation: {x: 0, y: -0, z: -0, w: 1}
m_LocalPosition: {x: 4.9373584, y: -0.0000009536743, z: 0.1366415}
m_LocalScale: {x: 4, y: 1, z: 10}
m_ConstrainProportionsScale: 0
m_Children: []
m_Father: {fileID: 0}
m_RootOrder: -1
m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
--- !u!33 &462218732848497293
MeshFilter:
@ -108,3 +109,16 @@ MeshCollider:
m_Convex: 0
m_CookingOptions: 30
m_Mesh: {fileID: 4300000, guid: 9a70db0102eed3c468687c669df871fb, type: 3}
--- !u!114 &6666505401970889560
MonoBehaviour:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 3438048684508788708}
m_Enabled: 1
m_EditorHideFlags: 0
m_Script: {fileID: 11500000, guid: 5a5a73cbbbae15cd2acb85efcfc98557, type: 3}
m_Name:
m_EditorClassIdentifier:
floorHeightOffset: 2

@ -11,6 +11,7 @@ GameObject:
- component: {fileID: 686072294256164430}
- component: {fileID: 8988795639257232531}
- component: {fileID: 6017193262191148020}
- component: {fileID: 5831692338177928969}
m_Layer: 8
m_Name: WallDoorDouble
m_TagString: Untagged
@ -25,13 +26,13 @@ Transform:
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 7247649765323194955}
serializedVersion: 2
m_LocalRotation: {x: 0, y: -0, z: -0, w: 1}
m_LocalPosition: {x: 4, y: 0.0000038146973, z: 12}
m_LocalScale: {x: 2, y: 1, z: 10}
m_ConstrainProportionsScale: 0
m_Children: []
m_Father: {fileID: 0}
m_RootOrder: -1
m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
--- !u!33 &8988795639257232531
MeshFilter:
@ -85,3 +86,16 @@ MeshRenderer:
m_SortingLayer: 0
m_SortingOrder: 0
m_AdditionalVertexStreams: {fileID: 0}
--- !u!114 &5831692338177928969
MonoBehaviour:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 7247649765323194955}
m_Enabled: 1
m_EditorHideFlags: 0
m_Script: {fileID: 11500000, guid: 5a5a73cbbbae15cd2acb85efcfc98557, type: 3}
m_Name:
m_EditorClassIdentifier:
floorHeightOffset: 2

@ -2845,7 +2845,7 @@ Transform:
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 330585543}
serializedVersion: 2
m_LocalRotation: {x: 0.3006394, y: 0.000000016410377, z: -0.000000005172915, w: 0.9537379}
m_LocalRotation: {x: 0.3006394, y: -0.000000016410377, z: 0.000000005172915, w: 0.9537379}
m_LocalPosition: {x: 3.01, y: 7, z: -6.75}
m_LocalScale: {x: 1, y: 1, z: 1}
m_ConstrainProportionsScale: 0
@ -4562,7 +4562,7 @@ Transform:
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 598754947}
serializedVersion: 2
m_LocalRotation: {x: 0.3006394, y: 0.000000016410377, z: -0.000000005172915, w: 0.9537379}
m_LocalRotation: {x: 0.3006394, y: -0.000000016410377, z: 0.000000005172915, w: 0.9537379}
m_LocalPosition: {x: 3.01, y: 7, z: -6.75}
m_LocalScale: {x: 1, y: 1, z: 1}
m_ConstrainProportionsScale: 1

@ -4,7 +4,7 @@ using UnityEngine.Serialization;
public class CameraController : MonoBehaviour {
private const float minFollowYOffset = 2f;
private const float maxFollowYOffset = 12f;
private const float maxFollowYOffset = 15f;
[FormerlySerializedAs("MoveSpeed")] [SerializeField]
private float moveSpeed = 10f;
@ -23,8 +23,14 @@ public class CameraController : MonoBehaviour {
private CinemachineTransposer cinemachineTransposer;
private Vector3 targetFollowOffset;
public static CameraController Instance { get; private set; }
private void Awake() => cinemachineTransposer = cinemachineVirtualCamera.GetCinemachineComponent<CinemachineTransposer>();
public float CameraHeight => targetFollowOffset.y;
private void Awake() {
Instance = this;
cinemachineTransposer = cinemachineVirtualCamera.GetCinemachineComponent<CinemachineTransposer>();
}
private void Start() => targetFollowOffset = cinemachineTransposer.m_FollowOffset;

@ -0,0 +1,29 @@
using System.Collections.Generic;
using Grid;
using UnityEngine;
public class FloorVisibility : MonoBehaviour {
[SerializeField] private float floorHeightOffset = 2f;
[SerializeField] private bool dynamicFloorPosition;
[SerializeField] private List<Renderer> ignorRendererList;
private int floor;
private Renderer[] rendererArray;
private void Awake() => rendererArray = GetComponentsInChildren<Renderer>(true);
private void Start() {
floor = LevelGrid.GetFloor(transform.position);
if (floor == 0 && !dynamicFloorPosition) Destroy(this);
}
private void Update() {
if (dynamicFloorPosition) floor = LevelGrid.GetFloor(transform.position);
Show(CameraController.Instance.CameraHeight > LevelGrid.FLOOR_HEIGHT * floor + floorHeightOffset || floor == 0);
}
private void Show(bool showing) {
foreach (Renderer rendererItem in rendererArray) {
if (ignorRendererList.Contains(rendererItem)) continue;
rendererItem.enabled = showing;
}
}
}

@ -0,0 +1,2 @@
fileFormatVersion: 2
guid: 5a5a73cbbbae15cd2acb85efcfc98557

@ -52,7 +52,7 @@ namespace Grid {
public List<Unit> GetUnitListAtGridPosition(GridPosition gridPosition) => GetGridSystem(gridPosition.Floor).GetGridObject(gridPosition).UnitList;
public void RemoveUnitAtGridPosition(GridPosition gridPosition, Unit unit) => GetGridSystem(gridPosition.Floor).GetGridObject(gridPosition).UnitList.Remove(unit);
private static int GetFloor(Vector3 worldPosition) => Mathf.RoundToInt(worldPosition.y / FLOOR_HEIGHT);
public static int GetFloor(Vector3 worldPosition) => Mathf.RoundToInt(worldPosition.y / FLOOR_HEIGHT);
public GridPosition GetGridPosition(Vector3 worldPosition) => GetGridSystem(GetFloor(worldPosition)).GetGridPosition(worldPosition);
public Vector3 GetWorldPosition(GridPosition gridPosition) => GetGridSystem(gridPosition.Floor).GetWorldPosition(gridPosition);

@ -1,2 +1,2 @@
m_EditorVersion: 2023.2.0b4
m_EditorVersionWithRevision: 2023.2.0b4 (f15431dc5dc1)
m_EditorVersion: 2023.2.0b5
m_EditorVersionWithRevision: 2023.2.0b5 (da89774450b8)