コード例 #1
0
ファイル: FallAnimation.cs プロジェクト: JayTea173/SoL
        protected IEnumerator Play()
        {
            player.RootForSeconds(2f);
            player.weapon = null;
            player.Rigidbody.isKinematic = true;

            player.transform.position = fallTo;
            player.Animation.SetAnimation("Death", true);
            player.Animation.enabled = false;
            player.Animation.spriteRenderer.transform.position = fallFrom;
            var diff = (player.transform.position - player.Animation.spriteRenderer.transform.position);


            PlayerController.Instance.ForceCenter();

            while (diff.magnitude > 0.5f && diff.y < 0f)
            {
                player.transform.position = fallTo;

                speed += diff.normalized * Time.deltaTime * 4f;
                player.Animation.spriteRenderer.transform.Translate(speed * Time.deltaTime);
                yield return(new WaitForEndOfFrame());

                player.RootForSeconds(2f);
                diff = (player.transform.position - player.Animation.spriteRenderer.transform.position);
            }

            GameObject splish = Instantiate(splashPrefab, player.transform.position + Vector3.down * 0.5f, Quaternion.identity);

            player.Animation.transform.position = fallTo;
            player.Rigidbody.isKinematic        = false;
            player.Damage(30, this);
            player.Animation.enabled = true;
            player.Animation.SetAnimation("Death", true);
            CameraController.Instance.Shake(18);

            yield return(new WaitForEndOfFrame());

            player.RootForSeconds(4f, false);
            yield return(new WaitForSeconds(4f));

            if (dialogAfterFall != null)
            {
                var dlgPartner = player.GetComponent <DialogPartner>();
                DialogUI.Instance.Display(dialogAfterFall, dlgPartner, dlgPartner);
            }


            yield return(null);
        }