基于GameObject接近度触发统一动画

时间:2018-01-09 00:10:15

标签: c# animation unity3d

我想创建一个简单的脚本,当玩家踩到特定的图块时会触发我的动画。但是,它没有触发!

为了实现这一点,我创建了一个不可见的(网格渲染器禁用)GameObject。动画师,附着在我动画组默认为空闲状态。

对于该组,我应用此脚本:

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

public class AnimTurretFromWall : MonoBehaviour {

    public Animator anim;
    public GameObject triggerPanel;
    public Transform player;
    public int minDistanceFromTriggerPanel;


    // Use this for initialization
    void Start () {
        anim = GetComponent<Animator>();
    }

    // Update is called once per frame
    void Update () {
        Vector3 distance = player.position - triggerPanel.transform.position;
        if (distance.magnitude < minDistanceFromTriggerPanel)
        {
            anim.Play("TurretFromWall");
        }

    }
}

对于Transform player,我使用标准资产中的FPS控制器。 triggerPanel是不可见的GameObject。

1 个答案:

答案 0 :(得分:0)

您也可以使用OnTriggerEnter()函数来启动动画。

 void OnTriggerEnter (Collider other)
{ 
    if(other.gameobject.tag == "Player")
    {
      // animation code
      Debug.Log("animation started..."); 
    }
}

从这里开始,一定要在你的磁贴上添加一个BoxCollider,并勾选Trigger选项,然后确保你的Player附有一个Rigidbody,这就是OnTriggerEnter()的工作方式。