// OnStateUpdate is called on each Update frame between OnStateEnter and OnStateExit callbacks //override public void OnStateUpdate(Animator animator, AnimatorStateInfo stateInfo, int layerIndex) //{ // //} // OnStateExit is called when a transition ends and the state machine finishes evaluating this state override public void OnStateExit(Animator animator, AnimatorStateInfo stateInfo, int layerIndex) { DudeData dude = animator.gameObject.GetComponent <DudeData> (); anim_length = 0; dude.cur_animation = null; }
public void UpdateHealth() { DudeData dude = gameObject.transform.parent.GetComponent <DudeData> (); TextMesh[] prop_vals = GetComponentsInChildren <TextMesh>(); int delta = 0; foreach (TextMesh prop_val in prop_vals) { if (prop_val.gameObject.transform.parent.name == "Health") { if (prop_val.name == "Value") { delta = dude.unit.hp - int.Parse(prop_val.text); prop_val.text = dude.unit.hp.ToString(); } else if (prop_val.name == "hp_delta" && delta != 0) { prop_val.text = (delta > 0 ? "+" : "-") + delta.ToString(); var prop_anim = prop_val.GetComponent <Animator> (); prop_anim.SetTrigger("StartAnim"); prop_anim.Update(0); } } } }
// OnStateEnter is called when a transition starts and the state machine starts to evaluate this state override public void OnStateEnter(Animator animator, AnimatorStateInfo stateInfo, int layerIndex) { DudeData dude = animator.gameObject.GetComponent <DudeData> (); DudeData suffered_dude = dude.dude_to_kill; //ToDo change it Vector2 delta = GameBoard.instance.FindCellPlace(suffered_dude.unit.oriented_cell) - GameBoard.instance.FindCellPlace(dude.unit.oriented_cell); double angle = 180 / Math.PI * Math.Atan2(delta.x, delta.y); //ToDo check sign //ToDo change to Vector2.Angle(points[i + 1] - points[i], Vector2.up) or something Quaternion rotation = Quaternion.identity; rotation.SetFromToRotation(dude.orientation, Quaternion.Euler(0, (float)angle, 0) * Vector3.forward); //rotation.eulerAngles = new Vector3(0, (float)angle, 0); dude.gameObject.transform.rotation = rotation; suffered_dude.GetComponent <Animator>().SetTrigger("block"); //ToDo same logic is present in UnitImpl.RunAndHit if (suffered_dude.dude_to_kill == null && !dude.unit.isRangedAttack && dude.unit.healing == 0 && dude.first_strike && suffered_dude.unit.hp > 0) { suffered_dude.dude_to_kill = dude; suffered_dude.GetComponent <Animator>().SetTrigger("hit"); } }
// OnStateEnter is called when a transition starts and the state machine starts to evaluate this state //override public void OnStateEnter(Animator animator, AnimatorStateInfo stateInfo, int layerIndex) { // //} // OnStateUpdate is called on each Update frame between OnStateEnter and OnStateExit callbacks //override public void OnStateUpdate(Animator animator, AnimatorStateInfo stateInfo, int layerIndex) { // //} // OnStateExit is called when a transition ends and the state machine finishes evaluating this state override public void OnStateExit(Animator animator, AnimatorStateInfo stateInfo, int layerIndex) { DudeData dude = animator.gameObject.GetComponent <DudeData> (); animator.gameObject.GetComponentInChildren <Properties> ().UpdateHealth(); if (dude.unit.hp == 0) { animator.SetTrigger("die"); } }
// OnStateUpdate is called on each Update frame between OnStateEnter and OnStateExit callbacks //override public void OnStateUpdate(Animator animator, AnimatorStateInfo stateInfo, int layerIndex) { // //} // OnStateExit is called when a transition ends and the state machine finishes evaluating this state override public void OnStateExit(Animator animator, AnimatorStateInfo stateInfo, int layerIndex) { DudeData dude = animator.gameObject.GetComponent <DudeData> (); dude.dude_to_kill = null; dude.first_strike = false; if (dude.unit.isVampire) { animator.gameObject.GetComponentInChildren <Properties> ().UpdateHealth(); } }
public void UnitAdded(UnitImpl unit) { UnityEngine.Object model = Resources.Load(unit.modelName, typeof(GameObject)); if (model == null) { model = Resources.Load("Dude", typeof(GameObject)); //Default model } GameObject clone = Instantiate(model) as GameObject; DudeData dude = clone.GetComponent <DudeData>(); dude.Initialize(unit); dudes_list.Add(dude); }
public void PlayHitAnimation(UnitImpl unit_to_kill) { if (gameObject.tag != "Dude") { ResetAnimations(false, false); //ToDo change only jit animation and so one } DudeData suffered_dude = GameBoard.instance.FindDude(unit_to_kill); if (suffered_dude.gameObject.tag != "Dude" && suffered_dude != this) { //ToDo fliendly fire ??? suffered_dude.ResetAnimations(unit.command_idx == suffered_dude.unit.command_idx, false); } if (cur_animation == null) { GetComponent <Animator> ().SetTrigger("hit"); } dude_to_kill = suffered_dude; first_strike = true; }
// OnStateMove is called right after Animator.OnAnimatorMove(). Code that processes and affects root motion should be implemented here override public void OnStateMove(Animator animator, AnimatorStateInfo stateInfo, int layerIndex) { DudeData dude = animator.gameObject.GetComponent <DudeData> (); if (dude.cur_animation != null) { double angle; Vector2 cur_pos = new Vector2(); if (dude.cur_animation.GetPosition(anim_length, out cur_pos, out angle)) { //ToDo change GetPosition to return Vector3 and rotate board to be xy instead of xz Vector3 offset = new Vector3((float)cur_pos.x, 0.1f, (float)cur_pos.y); animator.gameObject.transform.position = offset; Quaternion rotation = Quaternion.identity; //rotation.eulerAngles = new Vector3(0, (float)angle, 0); rotation.SetFromToRotation(dude.orientation, Quaternion.Euler(0, (float)angle, 0) * Vector3.forward); animator.gameObject.transform.rotation = rotation; anim_length += Time.deltaTime * 5 * dude.moving_speed; //ToDo this is not good } else if (!is_hit_set) { is_hit_set = true; if (dude.dude_to_kill != null) { animator.SetTrigger("hit"); } else { animator.SetTrigger("walk"); } } } }
public void RemoveUnit(DudeData dude) { dudes_list.Remove(dude); gameboard_impl.commands[dude.unit.command_idx].staff.Remove(dude.unit); }