Skip to content
Draft
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
8 changes: 4 additions & 4 deletions Assets/Scenes/CraterTown.unity
Original file line number Diff line number Diff line change
Expand Up @@ -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:
Expand Down Expand Up @@ -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
Expand Down Expand Up @@ -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
Expand Down Expand Up @@ -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
Expand Down
30 changes: 17 additions & 13 deletions Assets/Scripts/Platforms/PlatformMovement.cs
Original file line number Diff line number Diff line change
Expand Up @@ -6,6 +6,9 @@ public class PlatformMovement : NetworkBehaviour
{
public List<Transform> routepoints;

[SerializeField]
private float forcePerSpeed = 10;

[SerializeField]
private float maxSpeed = 5;

Expand All @@ -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;
Expand All @@ -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)
{
Expand All @@ -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<Rigidbody>(out var rigidbody))
return;
other.transform.SetParent(null);

var force = currentSpeed * forcePerSpeed * currentDirection;
rigidbody.AddForce(force, ForceMode.Acceleration);
}
}