Unity3d--碰撞检测(一)

碰撞分为三个阶段:

演示一下吧:

using System.Collections;
using System.Collections.Generic;
using UnityEngine;

public class Player1 : MonoBehaviour {

    private Rigidbody rd;      //创建一个刚体类型的对象
    public float force=5.0f;   //定义成public类型,就可以在Inspector面板上直接更改值
	// Use this for initialization
	void Start () {
        rd = GetComponent<Rigidbody>();     //得到当前物体的刚体组件属性,并赋值给rd
	}
	
	// Update is called once per frame
	void Update () {
        //用来得到水平的按键  
        float h = Input.GetAxis("Horizontal");
        //用来得到水平的按键   
        float v = Input.GetAxis("Vertical");
        rd.AddForce(new Vector3(h, 0, v)*force);   
	}



//---------------------------------------------------------
    void OnCollisionEnter(Collision collision)
    {
        // collision.collider 获取碰撞物体上的collider组件
        string name = collision.collider.name;
        print(name);
    }
}

在这里插入图片描述
在这里插入图片描述

using System.Collections;
using System.Collections.Generic;
using UnityEngine;

public class Player1 : MonoBehaviour {

    private Rigidbody rd;      //创建一个刚体类型的对象
    public float force=5.0f;   //定义成public类型,就可以在Inspector面板上直接更改值
	// Use this for initialization
	void Start () {
        rd = GetComponent<Rigidbody>();     //得到当前物体的刚体组件属性,并赋值给rd
	}
	
	// Update is called once per frame
	void Update () {
        //用来得到水平的按键   a返回-1   d返回1
        float h = Input.GetAxis("Horizontal");
        //用来得到水平的按键   s返回-1   w返回1
        float v = Input.GetAxis("Vertical");
        rd.AddForce(new Vector3(h, 0, v)*force);   
	}
    //碰撞检测   会有实际的物理效果
    void OnCollisionEnter(Collision collision)
    {
        // collision.collider 获取碰撞物体上的collider组件
        //string name = collision.collider.name;     //得到碰撞物体的名字为字符串类型
        //print(name);    在Console面板中输出名字
        if(collision.collider.tag=="pickup")    
        {
            //如果碰撞物体的标签是pickup就销毁
            Destroy(collision.collider.gameObject);    
        }
    }
}

在这里插入图片描述

发布了55 篇原创文章 · 获赞 47 · 访问量 3460

猜你喜欢

转载自blog.csdn.net/qq_42577542/article/details/105100669