only allow using elevator while on it

This commit is contained in:
2023-05-15 09:13:12 +02:00
parent 8de8301205
commit 0d451302e0
5 changed files with 67 additions and 27 deletions

View File

@@ -43,7 +43,8 @@ GameObject:
- component: {fileID: 8648774459861283546}
- component: {fileID: 716647553232511872}
- component: {fileID: 2841556225424433569}
m_Layer: 0
- component: {fileID: 5292547662050914046}
m_Layer: 7
m_Name: Elevator
m_TagString: Untagged
m_Icon: {fileID: 0}
@@ -101,6 +102,27 @@ Animator:
m_AllowConstantClipSamplingOptimization: 1
m_KeepAnimatorStateOnDisable: 0
m_WriteDefaultValuesOnDisable: 0
--- !u!65 &5292547662050914046
BoxCollider:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 1636625108852260585}
m_Material: {fileID: 0}
m_IncludeLayers:
serializedVersion: 2
m_Bits: 0
m_ExcludeLayers:
serializedVersion: 2
m_Bits: 0
m_LayerOverridePriority: 0
m_IsTrigger: 1
m_ProvidesContacts: 0
m_Enabled: 1
serializedVersion: 3
m_Size: {x: 1, y: 2, z: 1}
m_Center: {x: 0, y: 1, z: 0}
--- !u!1 &2903613370134496792
GameObject:
m_ObjectHideFlags: 0
@@ -272,7 +294,7 @@ Transform:
- {fileID: 6915102081068721723}
- {fileID: 4453669748914392433}
m_Father: {fileID: 0}
m_RootOrder: -1
m_RootOrder: 0
m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
--- !u!114 &6525843738508825059
MonoBehaviour:

View File

@@ -8,7 +8,7 @@ using LogType = EscapeRoomEngine.Engine.Runtime.Utilities.LogType;
namespace Station46.Modules.Elevated_Platform.Scripts
{
[RequireComponent(typeof(Animator))]
[RequireComponent(typeof(Animator), typeof(Collider))]
public class PlatformElevator : MonoBehaviour
{
public enum Status
@@ -34,7 +34,11 @@ namespace Station46.Modules.Elevated_Platform.Scripts
case Status.Bottom:
case Status.Top:
ReleasePlayer();
_button.Enable();
if (!_leftElevatorWhileMoving)
{
_button.Enable();
}
_leftElevatorWhileMoving = false;
break;
case Status.Moving:
_button.Disable();
@@ -49,6 +53,7 @@ namespace Station46.Modules.Elevated_Platform.Scripts
private Status _status = Status.Bottom;
private Animator _animator;
private Transform _previousPlayerParent;
private bool _leftElevatorWhileMoving;
private void Awake()
{
@@ -104,5 +109,28 @@ namespace Station46.Modules.Elevated_Platform.Scripts
throw new ArgumentOutOfRangeException();
}
}
private void OnTriggerEnter(Collider other)
{
if (_status != Status.Moving && other.CompareTag("MainCamera"))
{
_button.Enable();
}
}
private void OnTriggerExit(Collider other)
{
if (other.CompareTag("MainCamera"))
{
if (_status == Status.Moving)
{
_leftElevatorWhileMoving = true;
}
else
{
_button.Disable();
}
}
}
}
}