【问题标题】:unity 2d animation calling enemy animator through main scriptunity 2d 动画通过主脚本调用敌人动画师
【发布时间】:2014-10-27 16:30:19
【问题描述】:

我已经为敌人的预制件添加了一个动画师,我想在我击中它时改变动画 在碰撞中(它的****出来)请有人帮助我:(

我尝试制作一个新的 var eanim : Animator.... 并在开始时调用它...但不会让我将 ememy animator 拖到插槽中

请问我该如何解决这个问题。

勾勒出我想要做什么,我想与敌人碰撞,让我击中的敌人变成死亡动画。

var Player : GameObject;
var Gravity:float = 2;
var speed:float = 2;
var enemytrans : Transform;
var enemy: GameObject;
public var jumped = false;
var anim : Animator;

function Start () {
 while (true) {
     yield WaitForSeconds (Random.Range(3, 0));
     enemy = Instantiate(enemytrans).gameObject;
 }
anim = GetComponent(Animator);
}

function Update () {


Player.transform.position.x = -4.325;

if (jumped == false){
anim.SetFloat("hf",0.0);
}
if (Input.GetButtonDown("Fire1") && jumped==false){
fire();
jumped = true;
}
if(jumped==true){
anim.SetFloat("hf",1);
}
}
function OnCollisionEnter2D(coll: Collision2D) {
if(coll.gameObject.CompareTag("ground")){
anim.SetFloat("hf",0.0);
jumped=false;
}
*********if(coll.gameObject.CompareTag("enemy") && jumped==true){   **
fire(); 
jumped=true;
anim.SetTrigger("isdead");                  <<<<<<<<<<<<<----- this is what i need help with ------
}
if(coll.gameObject.CompareTag("enemy") && jumped==false){
Destroy(Player);
}
}


function fire(){
Player.transform.Translate(Vector3(Input.GetAxis("Vertical") * speed * Time.deltaTime, 0, 0));
Player.rigidbody2D.velocity = Vector2(0,10);
}

【问题讨论】:

    标签: unity3d unityscript


    【解决方案1】:

    如果您统一执行 anim.SetTrigger(..),您还需要在 Animator 窗口中为相应的游戏对象进行设置。

    因此,选择您的游戏对象并转到窗口 -> animator,添加一个触发参数(在您的情况下,名称为“isdead”) - 并设置不同状态的转换。因此,例如,我创建了一个空状态并将其设置为默认状态,然后在该状态和我的动画状态之间拖动以获得转换。

    在你刚刚设置默认 -> 动画状态的转换中,在条件下使用“isdead”参数。并且在动画状态 -> 默认情况下,您将退出时间设置为条件。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2020-09-23
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2022-01-10
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多