public void OnCollision(MobileTile mobile) { if (mobile.isColliding) { return; } mobile.isColliding = true; }
private static void AlignFrontTrigger(MobileTile mobile) { if (mobile.frontTrigger == null) { return; } mobile.frontTrigger.offset = Align(mobile.frontTrigger.offset, mobile.velocity); }
public void OnEnableMobileTile(MobileTile mobile) { if (m_Mobiles.Contains(mobile)) { return; } mobile.frontTrigger = GetTrigger(mobile.gameObject); AlignFrontTrigger(mobile); m_Mobiles.Add(mobile); }
// Only responds to collision once per update, // because collisions can happen many times. private void Move(MobileTile mobile, float deltaTime) { if (mobile == null) { return; } if (mobile.isColliding) { mobile.isColliding = false; Snap(mobile.transform, -mobile.velocity * deltaTime); Rotate(mobile, 180f); } AlignFrontTrigger(mobile); Move(mobile.transform, mobile.velocity, deltaTime * m_TimeScale); }
public void OnDisableMobileTile(MobileTile mobile) { m_Mobiles.Remove(mobile); }
private static void Rotate(MobileTile mobile, float degrees) { mobile.velocity = Rotate(mobile.velocity, degrees); AlignFrontTrigger(mobile); }