// Update is called once per frame public override void FixedUpdate() { float deltaTime = Time.fixedDeltaTime; AddForce(ForceGenerator3D.GenerateForce_Gravity(Mass, m_Gravity, Vector3.up)); if (Input.GetKey(KeyCode.A) || Input.GetKey(KeyCode.E)) { AddThrust(deltaTime, new Vector3(-m_ThrusterDistFromCenter, 0)); } if (Input.GetKey(KeyCode.D) || Input.GetKey(KeyCode.E)) { AddThrust(deltaTime, new Vector3(m_ThrusterDistFromCenter, 0)); } if (Input.GetKey(KeyCode.W) || Input.GetKey(KeyCode.E)) { AddThrust(deltaTime, new Vector3(0, 0, m_ThrusterDistFromCenter)); } if (Input.GetKey(KeyCode.S) || Input.GetKey(KeyCode.E)) { AddThrust(deltaTime, new Vector3(0, 0, -m_ThrusterDistFromCenter)); } if (m_LastContact != null) { HandleJustCollided(deltaTime); m_LastContact = null; } if (Vector3.Dot(transform.up, Vector3.up) < 0 && m_LastContact == null) { m_UpsidedownSinceContact = true; } base.FixedUpdate(); }
public override void OnCollision(HullCollision3D coll) { float angle = Mathf.Acos(Vector3.Dot(transform.up, Vector3.up)); if (angle < m_MaxAngleOnLand && m_Velocity.magnitude < m_MaxSpeedOnLand) { if (LunarLanderGameManager.m_Instance != null && m_UpsidedownSinceContact) { LunarLanderGameManager.m_Instance.m_Score++; } } else { LunarLanderGameManager.m_Instance.ResetPlayer(); } m_Fuel = m_StartFuel; m_UpsidedownSinceContact = false; }
public virtual void FixedUpdate() { for (int i = 0; i < mPhysicsObjects.Count; i++) { for (int j = i + 1; j < mPhysicsObjects.Count; j++) { Transform maxParentA = mPhysicsObjects[i].transform; while (maxParentA.parent != null) { maxParentA = maxParentA.parent; } Transform maxParentB = mPhysicsObjects[i + 1].transform; while (maxParentB.parent != null) { maxParentB = maxParentA.parent; } if (maxParentA != maxParentB) { //bool coll = mPhysicsObjects[i].detectCollision(mPhysicsObjects[j]); HullCollision3D collision = mPhysicsObjects[i].DetectCollision(mPhysicsObjects[j]); if (collision != null) { if (collision.a is LunarLander3DController) { (collision.a as LunarLander3DController).m_LastContact = collision; } if (collision.b is LunarLander3DController) { (collision.b as LunarLander3DController).m_LastContact = collision; } if (!(collision.a.m_IsTrigger || collision.b.m_IsTrigger)) { collision.a.OnCollision(collision); //info is still valid before resolved called } collision.b.OnCollision(collision); collision.Resolve(Time.fixedDeltaTime); } } } } }
public override void OnCollision(HullCollision3D coll) { }
public override void OnCollision(HullCollision3D coll) { base.OnCollision(coll); LunarLanderGameManager.m_Instance.ResetPlayer(); }
public abstract void OnCollision(HullCollision3D coll);