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/