diff --git a/Assets/Scenes/CraterTown.unity b/Assets/Scenes/CraterTown.unity index 3eceabcb..7d147c42 100644 --- a/Assets/Scenes/CraterTown.unity +++ b/Assets/Scenes/CraterTown.unity @@ -38,7 +38,7 @@ RenderSettings: m_ReflectionIntensity: 1 m_CustomReflection: {fileID: 0} m_Sun: {fileID: 662445327} - m_IndirectSpecularColor: {r: 0.06339308, g: 0.22008887, b: 0.49535277, a: 1} + m_IndirectSpecularColor: {r: 0.062406633, g: 0.2193088, b: 0.494932, a: 1} m_UseRadianceAmbientProbe: 0 --- !u!157 &3 LightmapSettings: @@ -6501,7 +6501,7 @@ GameObject: m_Icon: {fileID: 0} m_NavMeshLayer: 0 m_StaticEditorFlags: 0 - m_IsActive: 0 + m_IsActive: 1 --- !u!4 &974049643 Transform: m_ObjectHideFlags: 0 @@ -9785,7 +9785,7 @@ GameObject: m_Icon: {fileID: 0} m_NavMeshLayer: 0 m_StaticEditorFlags: 0 - m_IsActive: 0 + m_IsActive: 1 --- !u!4 &1483779470 Transform: m_ObjectHideFlags: 0 @@ -12495,7 +12495,7 @@ GameObject: m_Icon: {fileID: 0} m_NavMeshLayer: 0 m_StaticEditorFlags: 0 - m_IsActive: 0 + m_IsActive: 1 --- !u!4 &1716348243 Transform: m_ObjectHideFlags: 0 diff --git a/Assets/Scripts/Platforms/PlatformMovement.cs b/Assets/Scripts/Platforms/PlatformMovement.cs index 98f765d4..70aa92a8 100644 --- a/Assets/Scripts/Platforms/PlatformMovement.cs +++ b/Assets/Scripts/Platforms/PlatformMovement.cs @@ -6,6 +6,9 @@ public class PlatformMovement : NetworkBehaviour { public List routepoints; + [SerializeField] + private float forcePerSpeed = 10; + [SerializeField] private float maxSpeed = 5; @@ -21,6 +24,9 @@ public class PlatformMovement : NetworkBehaviour private int nextRoutepointIndex; private float travelDistance; + private Vector3 currentDirection; + private float currentSpeed; + private void Start() { nextRoutepointIndex = 0; @@ -46,13 +52,14 @@ private void FixedUpdate() private void MovePlatform() { float currentDistance = Vector3.Distance(routepoints[nextRoutepointIndex].transform.position, transform.position); + currentDirection = (routepoints[nextRoutepointIndex].transform.position - transform.position).normalized; // Smoothly decelerate/accelerate at endpoints var distanceFromClosesEndpoint = Mathf.Min(currentDistance, Mathf.Abs(travelDistance - currentDistance)); - var moveSpeed = Mathf.Lerp(minSpeed, maxSpeed, distanceFromClosesEndpoint / accelerationDistance); + currentSpeed = Mathf.Lerp(minSpeed, maxSpeed, distanceFromClosesEndpoint / accelerationDistance); transform.position = Vector3.MoveTowards(transform.position, routepoints[nextRoutepointIndex].transform.position, - moveSpeed * Time.deltaTime); + currentSpeed * Time.deltaTime); if (currentDistance <= 0) { @@ -65,20 +72,17 @@ private void MovePlatform() nextRoutepointIndex = 0; } - private void OnTriggerEnter(Collider other) + + private void OnTriggerStay(Collider other) { - if (!other.gameObject.TryGetComponent(out PlayerManager playerManager)) + // Only local human players should get the effect... + if (!other.gameObject.TryGetComponent(out PlayerManager playerManager) || !playerManager.inputManager) return; - // Only set transform locally - if (playerManager.inputManager) - other.transform.SetParent(transform); - } - - private void OnTriggerExit(Collider other) - { - if (!other.gameObject.TryGetComponent(out PlayerManager playerManager)) + if (!other.gameObject.TryGetComponent(out var rigidbody)) return; - other.transform.SetParent(null); + + var force = currentSpeed * forcePerSpeed * currentDirection; + rigidbody.AddForce(force, ForceMode.Acceleration); } }