示例#1
0
    // 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();
        }
    }