Unity3D 代理的使用及获取两个碰撞器的碰撞点

来源:互联网 发布:手写输入法软件下载 编辑:程序博客网 时间:2024/06/03 18:25


 中的事件机制封装的并不是特别好,如果学过AS3的,会发现再也没有比AS3封装的更完美的了,包括事件机制用起来都是那么的完美。步入正题:
首先创建一个类,比如MyClass,在MyClass中定义代理:

public delegate void ColorChangeEventHandler(Color c, string Tag);

public event ColorChangeEventHandler OnColorChangeEvent;


如果在MyClass中调用了OnColorChangeEvent,又想让其他类也接收到此消息,可以在希望接收到此消息到类中添加该代理到具体实现方法,比如:

ColorPicker=GameObject.Find("RTColorPicker").GetComponent<MyClass>();
ColorPicker.OnColorChangeEvent += OnColorChange;
void OnColorChange(Color rgbColor, string tagStr)
{
 
}


 获取两个碰撞器的碰撞点

public virtual void DoCollisionEnter(Collision pOther)
{
                ContactPoint contact = pOther.contacts[0];
                Quaternion rot = Quaternion.FromToRotation(Vector3.up, contact.normal);
                Vector3 pos = contact.point;    //这个就是碰撞点
                Instantiate(MeteorLightPrefab, pos, rot) ;  //在碰撞点产生爆炸火焰
}


0 0
原创粉丝点击