2

所以我查了这个,但没有什么对我有用。我有一个动画,叫做“gemAnimation1”,我有一个盒子对撞机设置为触发。当它与播放器发生碰撞时,我希望它切换动画。这是我拼凑的代码,但它不起作用。动画“hasTouched”的触发器。

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

public class gemCollider : MonoBehaviour {

    private Animator animator;

    void Start()
    {
        animator = GetComponent<Animator>();
    }
    void Update ()
    {

    }

    void OnTriggerEnter (Collider other)
    {
        animator.SetTrigger("hasTouched");
    }
}

编辑

这是脚本附加到的游戏对象的屏幕截图。 游戏对象 动画师

4

1 回答 1

3

OnTriggerEnter功能适用​​于 3D 游戏对象。

您正在使用SpriteRenderer并且BoxCollider2D两者都用于 2D 游戏对象。必须使用OnTriggerEnter2D带有as 参数的函数。Collider2D

void OnTriggerEnter2D(Collider2D collision)
{
    animator.SetTrigger("hasTouched");
}

笔记:

您还必须附加Rigidbody2D到 2D 对象之一才能OnTriggerEnter2D调用该函数。Rigidbody2D我在你的截图中没有看到。

于 2018-08-16T23:54:39.067 回答