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

欢迎来到unity学习unity培训、unity企业培训教育专区,这里有很多U3D资源U3D培训视频U3D教程U3D常见问题U3D项目源码,我们致力于打造业内unity3d培训、学习第一品牌。

 Unity中的事件机制封装的并不是特别好,如果学过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)
{
 
}

Unity3D 获取两个碰撞器的碰撞点

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) ;  //在碰撞点产生爆炸火焰
}

更多精彩请点击 http://www.gopedu.com/

原文地址:https://www.cnblogs.com/Unity3Dqishituan/p/4074839.html