public void UpdateDesiredTargetSpeed(Vector2 input, InputProviderBase inputProvider)
        {
            if (input == Vector2.zero)
            {
                return;
            }
            if (input.x > 0 || input.x < 0)
            {
                //strafe
                CurrentTargetSpeed = StrafeSpeed;
            }
            if (input.y < 0)
            {
                //backwards
                CurrentTargetSpeed = BackwardSpeed;
            }
            if (input.y > 0)
            {
                //forwards
                //handled last as if strafing and moving forward at the same time forwards speed should take precedence
                CurrentTargetSpeed = ForwardSpeed;
            }
#if !MOBILE_INPUT
            if (inputProvider.Controls.Run)
            {
                CurrentTargetSpeed *= RunMultiplier;
                m_Running           = true;
            }
            else
            {
                m_Running = false;
            }
#endif
        }
예제 #2
0
파일: Player.cs 프로젝트: sgdc/Bullet-Time
    void Start()
    {
        trans         = GetComponent <Transform>();
        inputProvider = GetComponent <InputProviderBase>();
        collider      = GetComponent <Collider>();
        rigid         = GetComponent <Rigidbody>();
        Transform model = trans.FindChild("Model");

        anim          = model.GetComponent <Animator>();
        disintegrator = model.GetComponentInChildren <SphericalDisintegration>();
        if (!isLocalPlayer && !FakeLocalPlayer)
        {
            Destroy(GetComponent <RigidbodyFirstPersonController>());
            Destroy(Cam.GetComponent <AudioListener>());
            Destroy(Cam.GetComponent <FlareLayer>());
            Destroy(Cam.GetComponent <Camera>());
        }
        else
        {
            if (isLocalPlayer)
            {
                gameObject.tag = "Player1";
            }
            firstPersonController = GetComponent <RigidbodyFirstPersonController>();
            Recordings            = new List <ControlsFrame> [3];
        }
        playerModel = model.gameObject;
        if (isLocalPlayer)
        {
            playerModel.SetActive(false);
        }
    }
예제 #3
0
    public void LookRotation(Transform character, Transform camera, InputProviderBase inputProvider)
    {
        float yRot = inputProvider.Controls.MouseX * XSensitivity;
        float xRot = inputProvider.Controls.MouseY * YSensitivity;

        m_CharacterTargetRot *= Quaternion.Euler(0f, yRot, 0f);
        m_CameraTargetRot    *= Quaternion.Euler(-xRot, 0f, 0f);

        if (clampVerticalRotation)
        {
            m_CameraTargetRot = ClampRotationAroundXAxis(m_CameraTargetRot);
        }

        if (smooth)
        {
            character.localRotation = Quaternion.Slerp(character.localRotation, m_CharacterTargetRot,
                                                       smoothTime * Time.deltaTime);
            camera.localRotation = Quaternion.Slerp(camera.localRotation, m_CameraTargetRot,
                                                    smoothTime * Time.deltaTime);
        }
        else
        {
            character.localRotation = m_CharacterTargetRot;
            camera.localRotation    = m_CameraTargetRot;
        }

        UpdateCursorLock();
    }
 private void Start()
 {
     m_CamTransform = cam.transform;
     m_RigidBody    = GetComponent <Rigidbody>();
     m_Capsule      = GetComponent <CapsuleCollider>();
     inputProvider  = GetComponent <InputProviderBase>();
     mouseLook.Init(transform, m_CamTransform);
 }