/***************************************************************************** * SpineboyController created by Mitch Thompson * Full irrevocable rights and permissions granted to Esoteric Software *****************************************************************************/ using UnityEngine; using System.Collections; [RequireComponent(typeof(SkeletonAnimation), typeof(Rigidbody2D))] public class SpineboyController : MonoBehaviour { SkeletonAnimation skeletonAnimation; [SpineAnimation] public string idleAnimation = "idle"; [SpineAnimation] public string walkAnimation = "walk"; [SpineAnimation] public string runAnimation = "run"; [SpineAnimation] public string hitAnimation = "hit"; [SpineAnimation] public string deathAnimation = "death"; public float walkVelocity = 1; public float runVelocity = 3; public int hp = 10; string currentAnimation = ""; bool hit = false; bool dead = false; void Start () { skeletonAnimation = GetComponent(); } void Update () { if (!dead) { float x = Input.GetAxis("Horizontal"); float absX = Mathf.Abs(x); if (!hit) { if (x > 0) skeletonAnimation.skeleton.FlipX = false; else if (x < 0) skeletonAnimation.skeleton.FlipX = true; if (absX > 0.7f) { SetAnimation(runAnimation, true); GetComponent().velocity = new Vector2(runVelocity * Mathf.Sign(x), GetComponent().velocity.y); } else if (absX > 0) { SetAnimation(walkAnimation, true); GetComponent().velocity = new Vector2(walkVelocity * Mathf.Sign(x), GetComponent().velocity.y); } else { SetAnimation(idleAnimation, true); GetComponent().velocity = new Vector2(0, GetComponent().velocity.y); } } else { if (skeletonAnimation.state.GetCurrent(0).Animation.Name != hitAnimation) hit = false; } } } void SetAnimation (string anim, bool loop) { if (currentAnimation != anim) { skeletonAnimation.state.SetAnimation(0, anim, loop); currentAnimation = anim; } } void OnMouseUp () { if (hp > 0) { hp--; if (hp == 0) { SetAnimation(deathAnimation, false); dead = true; } else { skeletonAnimation.state.SetAnimation(0, hitAnimation, false); skeletonAnimation.state.AddAnimation(0, currentAnimation, true, 0); GetComponent().velocity = new Vector2(0, GetComponent().velocity.y); hit = true; } } } }