コード例 #1
0
        private void Update()
        {
            // Context switch was requested
            // To ensure we do not switch controllers in the middle of the frame we only update the
            // controller at the beginning of the frame. Controller change requests made in the middle
            // of the frame will only affect the m_NewController.
            if (m_NewController != null)
            {
                m_controller    = m_NewController;
                m_NewController = null;
            }
            RotateView();

            RaycastHit HitInfo;
            int        NotPlayerMask = ~(1 << LayerMask.NameToLayer("PlayerCharacter"));

            if (Physics.Raycast(m_Camera.transform.position, m_Camera.transform.forward, out HitInfo, 10.0f, NotPlayerMask))
            {
                GuiOutput.DisplayDebugDistanceMessage("" + ((RaycastHit)HitInfo).distance);
                m_WasHovering = true;
                GameObject NewTarget = HitInfo.collider.gameObject;
                if (NewTarget == m_PreviousTarget)
                {
                    m_HoverTime += Time.deltaTime;
                    m_controller.OnHover(m_HoverTime);
                }
                else
                {
                    m_HoverTime = 0.0f;
                    m_controller.OnTargetChange(HitInfo);
                }
                m_PreviousTarget = NewTarget;
            }
            else if (m_WasHovering)
            {
                m_WasHovering    = false;
                m_PreviousTarget = null;
                m_controller.OnTargetChange(null);
            }

            if (!m_MouseDown)
            {
                m_MouseDown = Input.GetMouseButtonDown(0);
                m_HoldTime  = 0.0f;
            }
            else if (Input.GetMouseButtonUp(0))
            {
                m_MouseDown = false;
                if (m_HoldTime < m_ClickSensitivity)
                {
                    m_controller.OnClick();
                }
                else
                {
                    m_controller.OnRelease(m_HoldTime);
                }
            }
            else
            {
                m_HoldTime += Time.deltaTime;
                if (m_HoldTime > m_ClickSensitivity)
                {
                    m_controller.OnHold(m_HoldTime);
                }
            }
        }