- Home /
Linked Attackmoves, not talking to Mecanim?
I am creating a combat engine, in which there are multiple Trees of linked moves. One should follow the other. For example, "Tree A" contains moves 1, 2, 3, etc... and "Tree B" contains moves 1, 2, 3. The animations within each tree are designed to be strung together in series, by the player pushing attack for each move. Fluidly moving from one animation to the next.
My script correctly generates an identifier for each "Tree" and "Move" within that tree, but I am having trouble with mecanim. It does not always call the animation each time the player "attacks." It somewhat randomly calls, and sometimes does not call. All my transitions within mecanim are NOT atomic.
Here is my move id generation script:
/// <summary>
/// Generates the Move ID this attack.
/// </summary>
void MoveIDGen(){
#region Primary Stance MoveGen
if(Stance == 1){
if(State == 1){
TreeIDLimit = PrimaryOffensiveMoves;
if(TreeID == 1){
IDLimit = 2;
}
if(TreeID == 2){
IDLimit = 5;
}
if(TreeID == 3){
IDLimit = 5;
}
}
if(State == 2){
TreeIDLimit = PrimaryMomentumMoves;
if(TreeID == 1){
IDLimit = 4;
}
}
if(State == 3){
TreeIDLimit = PrimaryKillMoves;
IDLimit = 1;
}
}
#endregion
else{
#region Secondary Moves
if(Stance == 2){
if(State == 1){
TreeIDLimit = SecondaryOffensiveMoves;
if(TreeID == 1){
IDLimit = 2;
}
if(TreeID == 2){
IDLimit = 4;
}
if(TreeID == 3){
IDLimit = 5;
}
}
if(State == 2){
TreeIDLimit = SecondaryMomentumMoves;
if(TreeID == 1){
IDLimit = 3;
}
if(TreeID == 2){
IDLimit = 3;
}
}
if(State == 3){
TreeIDLimit = SecondaryKillMoves;
IDLimit = 1;
}
}
#endregion
}
RandID();
}
/// <summary>
/// Random ID within Limits.
/// </summary>
void RandID(){
if(TreeID < 1 | TreeID > TreeIDLimit){
TreeID = Random.Range(1, TreeIDLimit + 1);
MoveID = 0;
}
if(MoveID > IDLimit){
TreeID = Random.Range(1, TreeIDLimit + 1);
MoveID = 0;
}
else
MoveID ++;
}
and here is my script for talking with mecanim:
using UnityEngine;
using System.Collections;
public class CombatAnimator : MonoBehaviour {
public bool Attack;
protected Animator animator;
// Use this for initialization
void Start () {
animator = GetComponent<Animator>();
}
// Update is called once per frame
void Update () {
PlayerMovement playermovement = transform.parent.GetComponent<PlayerMovement>();
PlayerCombat1 playercombat = transform.parent.GetComponent<PlayerCombat1>();
animator.SetInteger("State", playercombat.State);
animator.SetInteger("MoveID", playercombat.MoveID);
animator.SetInteger("Stance", playercombat.Stance);
animator.SetInteger("TreeID", playercombat.TreeID);
animator.SetBool("Attack", Attack);
animator.SetFloat("Speed", playermovement.Speed);
if(Attack == true){
transform.localPosition = new Vector3(0, 0, 0);
transform.localEulerAngles = new Vector3(270, 0, 0);
}
}
}
The weird part, is that all of the variables both int and float update within animator controller in real time, but the animations are not triggered. Any help would be greatly appreciated!!
Your answer
![](https://koobas.hobune.stream/wayback/20220613082746im_/https://answers.unity.com/themes/thub/images/avi.jpg)
Follow this Question
Related Questions
Random attack animation 1 Answer
Animator Random Parameter Set 0 Answers
Creating an animation with variables? 2 Answers
How do you script combo attacks? 2 Answers