fix: sync the prototype
This commit is contained in:
@@ -55,7 +55,8 @@ public class ButtonSequenceDoorPuzzle : MonoBehaviour
|
||||
if (button == null)
|
||||
continue;
|
||||
|
||||
UnityAction action = () => OnButtonPressed(i);
|
||||
int buttonIndex = i;
|
||||
UnityAction action = () => OnButtonPressed(buttonIndex);
|
||||
m_cachedListeners[i] = action;
|
||||
button.OnInteract.AddListener(action);
|
||||
}
|
||||
|
||||
@@ -20,7 +20,6 @@ public class PressurePlateButton : MonoBehaviour
|
||||
public UnityEvent OnReleased;
|
||||
|
||||
private readonly HashSet<Collider> m_validCollidersOnPlate = new HashSet<Collider>();
|
||||
private readonly HashSet<Collider> m_stayedThisPhysicsFrame = new HashSet<Collider>();
|
||||
private bool m_isPressed;
|
||||
|
||||
private void Reset()
|
||||
@@ -43,16 +42,8 @@ public class PressurePlateButton : MonoBehaviour
|
||||
}
|
||||
}
|
||||
|
||||
private void OnTriggerStay(Collider other)
|
||||
{
|
||||
if (IsValidActivator(other))
|
||||
m_stayedThisPhysicsFrame.Add(other);
|
||||
}
|
||||
|
||||
private void OnTriggerExit(Collider other)
|
||||
{
|
||||
m_stayedThisPhysicsFrame.Remove(other);
|
||||
|
||||
if (!m_validCollidersOnPlate.Remove(other))
|
||||
return;
|
||||
|
||||
@@ -63,26 +54,6 @@ public class PressurePlateButton : MonoBehaviour
|
||||
}
|
||||
}
|
||||
|
||||
private void FixedUpdate()
|
||||
{
|
||||
if (m_validCollidersOnPlate.Count == 0)
|
||||
{
|
||||
m_stayedThisPhysicsFrame.Clear();
|
||||
return;
|
||||
}
|
||||
|
||||
m_validCollidersOnPlate.RemoveWhere(c => c == null || !c.enabled || !c.gameObject.activeInHierarchy);
|
||||
|
||||
m_validCollidersOnPlate.IntersectWith(m_stayedThisPhysicsFrame);
|
||||
m_stayedThisPhysicsFrame.Clear();
|
||||
|
||||
if (m_validCollidersOnPlate.Count == 0 && m_isPressed)
|
||||
{
|
||||
m_isPressed = false;
|
||||
OnReleased?.Invoke();
|
||||
}
|
||||
}
|
||||
|
||||
private bool IsValidActivator(Collider other)
|
||||
{
|
||||
if (((1 << other.gameObject.layer) & detectionMask) == 0)
|
||||
|
||||
@@ -7,7 +7,7 @@ public class SlidingDoor : MonoBehaviour
|
||||
public enum SlideDirection { Positive = 1, Negative = -1 }
|
||||
|
||||
[Header("Slide Settings")]
|
||||
[Tooltip("Axis in parent space (or world space if no parent) the door slides along.")]
|
||||
[Tooltip("Local axis the door slides along.")]
|
||||
[SerializeField] private SlideAxis axis = SlideAxis.X;
|
||||
|
||||
[Tooltip("Which way along the axis the door opens.")]
|
||||
@@ -36,7 +36,7 @@ public class SlidingDoor : MonoBehaviour
|
||||
private void Awake()
|
||||
{
|
||||
m_closedPos = transform.localPosition;
|
||||
m_openPos = m_closedPos + GetParentSpaceSlideVector() * slideDistance;
|
||||
m_openPos = m_closedPos + GetSlideVector() * slideDistance;
|
||||
|
||||
if (startOpen)
|
||||
{
|
||||
@@ -86,7 +86,7 @@ public class SlidingDoor : MonoBehaviour
|
||||
Open();
|
||||
}
|
||||
|
||||
private Vector3 GetParentSpaceSlideVector()
|
||||
private Vector3 GetSlideVector()
|
||||
{
|
||||
float sign = (float)direction;
|
||||
return axis switch
|
||||
@@ -98,19 +98,14 @@ public class SlidingDoor : MonoBehaviour
|
||||
};
|
||||
}
|
||||
|
||||
private Vector3 GetWorldSpaceSlideVector()
|
||||
{
|
||||
return transform.parent != null
|
||||
? transform.parent.TransformDirection(GetParentSpaceSlideVector()).normalized
|
||||
: GetParentSpaceSlideVector().normalized;
|
||||
}
|
||||
|
||||
#if UNITY_EDITOR
|
||||
private void OnDrawGizmos()
|
||||
{
|
||||
Vector3 worldClosed = transform.position;
|
||||
Vector3 worldClosed = transform.parent != null
|
||||
? transform.parent.TransformPoint(transform.localPosition)
|
||||
: transform.position;
|
||||
|
||||
Vector3 slideVec = GetWorldSpaceSlideVector() * slideDistance;
|
||||
Vector3 slideVec = transform.TransformDirection(GetSlideVector()) * slideDistance;
|
||||
Gizmos.color = Color.cyan;
|
||||
Gizmos.DrawLine(worldClosed, worldClosed + slideVec);
|
||||
Gizmos.DrawWireSphere(worldClosed + slideVec, 0.08f);
|
||||
|
||||
@@ -144,13 +144,12 @@ public class SubtitleSequencePlayer : MonoBehaviour
|
||||
|
||||
float typeTime = 0f;
|
||||
int totalChars = line.text.Length;
|
||||
int visibleChars = 0;
|
||||
if (typewriterCharsPerSecond > 0f)
|
||||
{
|
||||
while (m_currentText.Length < totalChars)
|
||||
{
|
||||
typeTime += Time.deltaTime;
|
||||
visibleChars = Mathf.Clamp(Mathf.FloorToInt(typeTime * typewriterCharsPerSecond), 0, totalChars);
|
||||
int visibleChars = Mathf.Clamp(Mathf.FloorToInt(typeTime * typewriterCharsPerSecond), 0, totalChars);
|
||||
m_currentText = line.text.Substring(0, visibleChars);
|
||||
yield return null;
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user