void OnTriggerStay(Collider other) { PlatformRider passenger = other.transform.root.GetComponentInChildren <PlatformRider> (); if (passenger == null || passengers.Contains(passenger)) { return; } if (passenger.BoardPlatform(this)) { BoardPlatform(passenger); } }
void LateUpdate() { Vector3 delta = transform.position - lastPosition; if (delta != Vector3.zero) { for (int i = 0; i < passengers.Count;) { PlatformRider passenger = passengers[i]; bool didUpdate = false; foreach (Collider collider in passenger.transform.root.GetComponentsInChildren <Collider> ()) { if ( ContainsPoint(passenger.transform.position) || (Vector3.Dot(passenger.transform.position - transform.position, transform.up) > 0.0f && IntersectingTrigger(collider)) ) { passenger.UpdatePlatform(delta); didUpdate = true; break; } } if (!didUpdate && passenger.LeavePlatform(this)) { LeavePlatform(passenger); } else { i++; } } } lastPosition = transform.position; }
public void LeavePlatform(PlatformRider passenger) { passengers.Remove(passenger); }
public void BoardPlatform(PlatformRider passenger) { passengers.Add(passenger); }
public void LeavePlatform (PlatformRider passenger) { passengers.Remove (passenger); }
public void BoardPlatform (PlatformRider passenger) { passengers.Add (passenger); }