如何在与播放器碰撞时使收藏集更改其动画?

时间:2019-04-16 15:31:47

标签: c# unity3d

这是我在这里的第一个问题,我是一个新手。我制作了一个可以在碰撞时由玩家拾取的物品,它只是重置了玩家的动画(此处不是我的意思),我只是希望拾取器的精灵在其自身销毁之前进行更改。

我已经搜索过了,但是找不到任何东西。

这是我在皮卡上的当前代码:

 using System.Collections;
 using System.Collections.Generic;
 using UnityEngine;

 public class PickUpReCharge : MonoBehaviour {
   public Animator anim;
   public Animator animc;

   void Start() {
   }

   void Update() {
 }

 private void OnTriggerEnter2D(Collider2D other) {
   if (other.tag == "Player") {
     anim.Rebind();
     animc.Rebind();
     Destroy(gameObject);
    }
  } 
}

一切正常,但是当我尝试使用类似的过渡到发生拾取动画的不同动画状态之类的对象时,该对象会在动画播放之前自毁,并且看起来不正确。

这是我首先尝试做的事情:

using System.Collections;
using System.Collections.Generic;
using UnityEngine;

public class PickUpReCharge : MonoBehaviour {

  public Animator anim;
  public Animator animc;
  public Animator animp;

  void Start() {

  }

  void Update() {

  }

private void OnTriggerEnter2D(Collider2D other) {

   if (other.tag == "Player") {
     anim.Rebind();
     animc.Rebind();
     animp.Play("Pickup", 0, 0.0f);
     Destroy(gameObject);
    }
  } 
}

但这根本不起作用。

我正在寻找一种效果,例如捡起硬币后出现火花。

有没有可以参考的预制资产?还是该代码很简单,而我在编写大声笑时就这么糟糕?

谢谢^^

1 个答案:

答案 0 :(得分:0)

我在用户Ali Baba的帮助下找到了答案。

基本上,我会使用Destroy(gameObject);并添加一些时间。 Destroy(gameObject, 0.3f);

这增加了破坏对象的时间。

这使它对我有用。所以我把动画脚本放在那里,有足够的时间播放!

using System.Collections;
using System.Collections.Generic;
using UnityEngine;

public class PickUpReCharge : MonoBehaviour
{
    public Animator anim;
    public Animator animc;
    public Animator anime;

    void Start()
    {
        anime.Play("Pickup", 0, 0f);
    }

    void Update()
    {

    }

    private void OnTriggerEnter2D(Collider2D other)
    {
        if (other.tag == "Player")
        {
            anim.Rebind();
            animc.Rebind();
            anime.Rebind();
            Destroy(gameObject, 0.3f);
        }
    }
}