// Update is called once per frame void Update() { //calc deltatime m_TimeThisFrame = Time.unscaledTime; float deltatime = m_TimeThisFrame - m_TimeLastFrame; m_TimeLastFrame = m_TimeThisFrame; //update the physics sim m_PhysicsScene.Update(deltatime); m_PhysicsScene.UpdateGizmos(); //add tracking for adding new forces if (Input.GetKeyDown(KeyCode.Mouse0)) { //Debug.Log("Mouse clicked at: " + Camera.main.ScreenToWorldPoint(Input.mousePosition)); PhysicsObject clickedObject = m_PhysicsScene.GetPOAtPoint(Camera.main.ScreenToWorldPoint(Input.mousePosition)); if (clickedObject != null) { //Debug.Log("This: " + clickedObject); m_TrackedSphere = (BilliardBall)clickedObject; } } if (Input.GetKeyUp(KeyCode.Mouse0)) { if (m_TrackedSphere != null) { m_TrackedSphere.ApplyForce(m_TrackedSphere.Position - (Vector2)Camera.main.ScreenToWorldPoint(Input.mousePosition)); } m_TrackedSphere = null; } //yes, im being cute here: if (Input.GetKeyDown(KeyCode.Escape)) { Application.Quit(); } }