Unity
Collision
Collision.contacts:1)功能简述public ContactPoint[] contacts;The contact points generated by the physics engine.Every contact contains a contact point, normal and the two colliders that collided (see ContactPoint). From inside OnCollisionStay or OnCollisionEnter you can always be sure that contacts has at least one element.2)使用举例 using UnityEngine; using System.Collections;public class ExampleClass : MonoBehaviour { void OnCollisionStay(Collision collision) { foreach (ContactPoint contact in collision.contacts) { print(contact.thisCollider.name + ' hit ' + contact.otherCollider.name); Debug.DrawRay(contact.point, contact.normal, Color.white); } } }
打开Unity,新建一个空工程,具体如下图
在场景中,新建一个“Plane”、“Cube”和“Sphere”,调整好他们间的布局,具体如下图
在场景中,新建一个粒子系统,调整好参数,并把它作为预制体,具体如下图
在工程中,新建一个脚本“CollisionTest”,双击脚本或者右键“Open C# Project”打开脚本,具体如下图
“CollisionTest”脚本上编写代码,首先设置变量,然后实现碰撞进入后在接触点生成物体,具体代码和代码说明如下图
“CollisionTest”脚本具体内容如下using System.Collections;using System.Collections.Generic;using UnityEngine;public class CollisionTest : MonoBehaviour { public GameObject go; // Use this for initialization void Start () { } // Update is called once per frame void Update () { } void OnCollisionEnter(Collision collision) { Debug.Log ('Enter'); Instantiate (go, collision.contacts[0].point, go.transform.rotation); }}
脚本编辑正确,回到Unity界面,把脚本“CollisionTest”赋给“Cube”,并把粒子预制体赋给脚本,在“Sphere”添加“Rigidbody”组件,具体如下图
运行场景,移动“Sphere”接触“Cube”,既可以看到接触点生成粒子,具体如下图
Collision彭煌记得给其中一个添加“Rigidbody”组件
您的支持,是我们不断坚持知识分享的动力,若帮到您,还请帮忙投票有得;若有疑问,请留言