2017-01-09 6 views
1

Я делаю способности для игры, и мне нужно добавить анимацию (которую я знаю, как это сделать). Моя проблема в том, что мне нужен способ сделать ссылку на анимацию без назначения конкретной анимации. У меня есть базовый класс вместе с базовой логикой для способности (где мне нужна общая ссылка, потому что мне нужна анимация), а затем, когда я хочу сделать способ, я создаю новый класс, наследующий базу, а затем создаю (таким образом, я бы назначил анимацию).Unity Animations C#

//Default logic for abilities 
public virtual void abilityEffects(hero caster, hero target){ 
    this.caster = caster; 
    this.target = target; 
    float DMG = damage * this.caster.heroAttPow; 

    //Ability should not be on cooldown the first time it is used 
    if (firstUse == true) 
    { 

     //sets the total damage to take into account the ability damage plus the hero power 
     //need general reference to animation here 
     //when animation is over, deal damage 
     this.target.HP -= DMG; 
     firstUse = false; 
     //cooldown begins 
     SpellStart = Time.time; 
    } 

    if(firstUse == false) 
    { 
     if (Time.time > SpellStart + SpellCooldown) 
     { 
      //sets the total damage to take into account the ability damage plus the hero power 
      //need general reference to animation here 
      //when animation is over, deal damage 
      this.target.HP -= DMG; 
      //cooldown begins 
      SpellStart = Time.time; 
     } 
    } 
} 
+0

Вы используете Mecani m к анимации? –

+0

Если вы знаете, как оживить, пришло время учиться использовать параметры и события Mecanim. – Vancete

+0

@ SergioOrmeño Я использую Blender для анимации, а затем экспортирую в единство как файл .fbx. –

ответ

0

А.Н. Animator Component контролирует все ваш объект анимацию и состояние, и если он присоединен к вашему gameobject вы можете получить ссылку на него, как это

public class player: MonoBehaviour { 
    public Animator anim;  
    public void Start() { 
     anim = GetComponent<Animator>(); 
    } 
} 

ваш класс также может быть abstract, если вы хотите вам просто нужно вызвать начало базового класса в дочернем классе, чтобы получить ссылку на animator component

public abstract class player: MonoBehaviour { 
    public Animator anim;  
    public void Start() {  
     anim = GetComponent<Animator>(); 
    } 
} 
public class PlayerChild: player{ 
    void Start() { 
     base.Start();   
    } 
} 
+0

Это выглядит многообещающе, я попробую. Спасибо! –

+0

Это работает по мере необходимости. Благодаря! –