碰撞反应Unity

时间:2018-02-13 19:44:00

标签: c# windows unity3d

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

public class MineExplode : MonoBehaviour {

    public float m_ExplosionRadius = 5f;          
    public float m_MaxDamage = 100f;
    public AudioSource m_ExplosionAudio;     
    public ParticleSystem m_ExplosionParticles;
    public LayerMask m_TankMask;                       
    public float m_ExplosionForce = 1000f;
    public GameObject Mine;

    public void start()
    {
        m_ExplosionParticles.Stop(true);
        m_ExplosionAudio.Stop();

    }

    public void OnTriggerEnter (Collider Name) {
        if (Name.tag == "Player")
        {
            m_ExplosionParticles.Play(true);
            m_ExplosionAudio.Play();
        }
    }
}

所以这是我的代码,但当我驾驶对撞机(在Unity中)时,它什么也没做......有人知道为什么会这样吗?任何帮助,将不胜感激。 我参加了Tanks 3D教程并决定为它添加一些地雷以适应Unity。

1 个答案:

答案 0 :(得分:0)

有很多事情会影响碰撞事件的发送和发送方式。

在编辑器中,您在对象上添加了一个对撞机组件。这使得静态对撞机。如果您还添加刚体组件,则会生成动态对撞机。静态对撞机最适合不动的想法。动态碰撞器用于移动的对象。

对于每个对撞机,您还可以在对象上添加的对撞机组件上勾选或取消选中 isTrigger 复选框。如果勾选,则对象的变换(位置,旋转)不会受到影响,但会触发OnTriggerEnter函数。

最后,请注意,不同的对象对将不会一起作用,并且可能您的对象没有反应,因为它碰撞的另一个对象未​​正确设置。

要确切知道将调用哪个函数以及哪些碰撞器可以一起操作,请参考this documentation page底部的碰撞操作矩阵