diff options
author | chai <chaifix@163.com> | 2020-12-30 20:59:04 +0800 |
---|---|---|
committer | chai <chaifix@163.com> | 2020-12-30 20:59:04 +0800 |
commit | e9ea621b93fbb58d9edfca8375918791637bbd52 (patch) | |
tree | 19ce3b1c1f2d51eda6878c9d0f2c9edc27f13650 /Client/Assembly-CSharp/KillAnimation.cs |
+init
Diffstat (limited to 'Client/Assembly-CSharp/KillAnimation.cs')
-rw-r--r-- | Client/Assembly-CSharp/KillAnimation.cs | 52 |
1 files changed, 52 insertions, 0 deletions
diff --git a/Client/Assembly-CSharp/KillAnimation.cs b/Client/Assembly-CSharp/KillAnimation.cs new file mode 100644 index 0000000..d6e980a --- /dev/null +++ b/Client/Assembly-CSharp/KillAnimation.cs @@ -0,0 +1,52 @@ +using System; +using System.Collections; +using PowerTools; +using UnityEngine; + +public class KillAnimation : MonoBehaviour +{ + public AnimationClip BlurAnim; + + public DeadBody bodyPrefab; + + public Vector3 BodyOffset; + + public IEnumerator CoPerformKill(PlayerControl source, PlayerControl target) + { + bool isParticipant = PlayerControl.LocalPlayer == source || PlayerControl.LocalPlayer == target; + PlayerPhysics sourcePhys = source.MyPhysics; + KillAnimation.SetMovement(source, false); + KillAnimation.SetMovement(target, false); + if (isParticipant) + { + Camera.main.GetComponent<FollowerCamera>().Locked = true; + } + target.Die(DeathReason.Kill); + SpriteAnim sourceAnim = source.GetComponent<SpriteAnim>(); + yield return new WaitForAnimationFinish(sourceAnim, this.BlurAnim); + source.NetTransform.SnapTo(target.transform.position); + sourceAnim.Play(sourcePhys.IdleAnim, 1f); + KillAnimation.SetMovement(source, true); + DeadBody deadBody = UnityEngine.Object.Instantiate<DeadBody>(this.bodyPrefab); + Vector3 vector = target.transform.position + this.BodyOffset; + vector.z = vector.y / 1000f; + deadBody.transform.position = vector; + deadBody.ParentId = target.PlayerId; + target.SetPlayerMaterialColors(deadBody.GetComponent<Renderer>()); + KillAnimation.SetMovement(target, true); + if (isParticipant) + { + Camera.main.GetComponent<FollowerCamera>().Locked = false; + } + yield break; + } + + public static void SetMovement(PlayerControl source, bool canMove) + { + source.moveable = canMove; + source.MyPhysics.ResetAnim(false); + source.NetTransform.enabled = canMove; + source.MyPhysics.enabled = canMove; + source.NetTransform.Halt(); + } +} |