示例#1
0
    IEnumerator Cinematic()
    {
        GameObject playerMesh = m_Player.transform.Find("Teto_GameReady").gameObject;

        Renderer[] renders = playerMesh.GetComponentsInChildren <Renderer>();
        m_PlayerCamera.enabled = false;
        bool  jump        = false;
        float maxDistance = m_vPlayerInitialPos.sqrMagnitude + m_Meteor.transform.position.sqrMagnitude;

        foreach (Renderer render in renders)
        {
            render.enabled = false;
        }
        m_Player.LockTotalMovement(true);
        Tweener tw = m_Meteor.transform.DOMove(m_vPlayerInitialPos, duration).SetEase(Ease.InFlash);

        tw.OnStart(() =>
        {
            SoundManager.Instance.SetGameParameter(GameParameters.Distance, 1);
            SoundManager.Instance.PlayEvent(SoundEvents.Play_Meteor, m_Meteor);
        }).OnComplete(() =>
        {
            GameObject obj         = Instantiate(m_MeteorExplosionPrefab);
            obj.transform.position = m_vPlayerInitialPos;
            SoundManager.Instance.SetGameParameter(GameParameters.Distance, 0);
            SoundManager.Instance.PlayEvent(SoundEvents.Stop_Meteor, m_Meteor);
            Destroy(obj, 5f);
        }).OnUpdate(() =>
        {
            Camera.main.transform.LookAt(m_Meteor.transform);
            float distance = m_vPlayerInitialPos.sqrMagnitude + m_Meteor.transform.position.sqrMagnitude;
            SoundManager.Instance.SetGameParameter(GameParameters.Distance, Mathf.InverseLerp(0, maxDistance, distance));
        });

        yield return(tw.WaitForCompletion());

        Destroy(m_Meteor);
        Camera.main.transform.DOLocalRotate(Vector3.zero, 1f);

        yield return(new WaitForSeconds(3f));

        yield return(null);

        Instantiate(m_TetoPuffParticle).transform.position = m_Player.transform.position + Vector3.up;
        m_PlayerCamera.enabled = true;
        foreach (Renderer render in renders)
        {
            render.enabled = true;
        }
        m_Player.LockTotalMovement(false);
    }
示例#2
0
    // Update is called once per frame
    void Update()
    {
        if (m_bFollowing)
        {
            if (m_pcTarget != null)
            {
                if (Input.GetKeyDown(KeyCode.Joystick1Button9) && !m_bLockRotation)
                {
                    StartCoroutine(RotateCameraToBack());
                }
                Clipping();
                Follow();
            }
#if CHEATCODE
            if (Input.GetKeyDown(KeyCode.Backspace) || Input.GetKeyDown(KeyCode.Joystick1Button6))
            {
                if (m_pcTarget)
                {
                    m_pcTarget.LockTotalMovement(true);
                }
                m_bFollowing = false;
            }
#endif
        }
        else
        {
#if CHEATCODE
            if (Input.GetKeyDown(KeyCode.Backspace) || Input.GetKeyDown(KeyCode.Joystick1Button6))
            {
                m_fRotationSpeed = 5f;
                if (m_pcTarget)
                {
                    m_pcTarget.LockTotalMovement(false);
                }
                m_bFollowing = true;
            }
            Move();
#endif
        }
    }