多语言展示
当前在线:392今日阅读:103今日分享:49

Unity Collision教程 之 碰撞接触点的快速获取

Unity Collision教程 之 碰撞接触点的快速获取。本节介绍两个物体碰撞的接触点的获取的简单案例,具体如下
工具/原料
1

Unity

2

Collision

一、知识要点
2

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);        }    } }

二、Collision教程 之 碰撞接触点的快速获取
1

打开Unity,新建一个空工程,具体如下图

2

在场景中,新建一个“Plane”、“Cube”和“Sphere”,调整好他们间的布局,具体如下图

3

在场景中,新建一个粒子系统,调整好参数,并把它作为预制体,具体如下图

4

在工程中,新建一个脚本“CollisionTest”,双击脚本或者右键“Open C# Project”打开脚本,具体如下图

5

“CollisionTest”脚本上编写代码,首先设置变量,然后实现碰撞进入后在接触点生成物体,具体代码和代码说明如下图

6

“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);    }}

7

脚本编辑正确,回到Unity界面,把脚本“CollisionTest”赋给“Cube”,并把粒子预制体赋给脚本,在“Sphere”添加“Rigidbody”组件,具体如下图

8

运行场景,移动“Sphere”接触“Cube”,既可以看到接触点生成粒子,具体如下图

注意事项
1

Collision彭煌记得给其中一个添加“Rigidbody”组件

2

您的支持,是我们不断坚持知识分享的动力,若帮到您,还请帮忙投票有得;若有疑问,请留言

推荐信息