【蓝鸥Unity开发基础三】课时15 刚体和Collider

推荐视频讲师博客:http://11165165.blog.51cto.com/

一、刚体

【蓝鸥Unity开发基础三】课时15 刚体和Collider_第1张图片

接着上节,继续来学习刚体,主要的内容就是施加力方面。

我们创建一个Plane地面,首先我们重置一下地面的属性,然后我们修改一下地面的大小,Scale X轴变成10,Scale Z轴变成10.

 

【蓝鸥Unity开发基础三】课时15 刚体和Collider_第2张图片

 

Plane染成绿色,然后我们在创建一个Cube,重置一下,把Cube拉到空中,把Cube染成红色。

【蓝鸥Unity开发基础三】课时15 刚体和Collider_第3张图片

然后我们给Cube加一个刚体,然后我们在给Cube加一个脚本Test

 

1、给当前游戏对象施加一个力

效果:运行之后,Cube落下, 然后按数字键——1,给Cube一个10f的力,持续按1Cube会上升!

 

using UnityEngine;
using System.Collections;

public class Test : MonoBehaviour {
    private Rigidbody r;
    void Start(){
        r = GetComponent<Rigidbody> ();
        
    }

    void Update () {
        //按数字键1,添加力
        if(Input.GetKey(KeyCode.Alpha1)){
            //给当前游戏对象施加一个力
            r.AddForce(new Vector3(0f,10f,0f));


        }
    
    }
} 


2、给当前游戏对象添施加力矩/扭矩,扭矩可以是物体旋转

using UnityEngine;
using System.Collections;

public class Test : MonoBehaviour {
    private Rigidbody r;
    void Start(){
        r = GetComponent<Rigidbody> ();
        
    }

    void Update () {
        //按数字键1,添加力
        if(Input.GetKey(KeyCode.Alpha1)){
            //给当前游戏对象施加一个力
//            r.AddForce(new Vector3(0f,20f,0f));

            //给当前游戏对象添施加力矩/扭矩,扭矩可以是物体旋转
            r.AddTorque(new Vector3(0f,20f,0f));

        }
    
    }
} 

3、给游戏对象在指定的位置上添加一个力

using UnityEngine;
using System.Collections;

public class Test : MonoBehaviour {
    private Rigidbody r;
    void Start(){
        r = GetComponent<Rigidbody> ();
        
    }

    void Update () {
        //按数字键1,添加力
        if(Input.GetKey(KeyCode.Alpha1)){
            //给当前游戏对象施加一个力
//            r.AddForce(new Vector3(0f,20f,0f));

            //给当前游戏对象添施加力矩/扭矩,扭矩可以是物体旋转
//            r.AddTorque(new Vector3(0f,20f,0f));

            //给游戏对象在指定的位置上添加一个力
            r.AddForceAtPosition (new Vector3(0f,10f,0f),new Vector3(0.5f,0.5f,0.5f));




        }
    
    }
}

【蓝鸥Unity开发基础三】课时15 刚体和Collider_第4张图片

 

4、在指定位置添加一个爆炸力

using UnityEngine;
using System.Collections;

public class Test : MonoBehaviour {
    private Rigidbody r;
    void Start(){
        r = GetComponent<Rigidbody> ();
        
    }

    void Update () {
        
        if(Input.GetKeyDown(KeyCode.Alpha1)){
            //给当前游戏对象施加一个力
//            r.AddForce(new Vector3(0f,20f,0f));

            //给当前游戏对象添施加力矩/扭矩,扭矩可以是物体旋转
//            r.AddTorque(new Vector3(0f,20f,0f));

            //给游戏对象在指定的位置上添加一个力
//            r.AddForceAtPosition (new Vector3(0f,10f,0f),new Vector3(0.5f,0.5f,0.5f));

            //在指定位置添加一个爆炸力
            r.AddExplosionForce(1500f,Vector3.zero,4f);


        }
    
    }
}

 

【蓝鸥Unity开发基础三】课时15 刚体和Collider_第5张图片

 

二、Collider——碰撞器,碰撞检测的

有刚体都会加Collider

 

 

【蓝鸥Unity开发基础三】课时15 刚体和Collider_第6张图片




【蓝鸥Unity开发基础三】课时15 刚体和Collider_第7张图片

回到Uninty中,Cube有一个默认Collider,Box Collider——盒形碰撞器,碰撞器的作用,可以界定一个范围。

Box Collider 属性介绍GameObject

Is Trigger:是否有触发效果,选择可以具有触发的检测

Material:需要一个物理材质的,并不是普通的材质,会涉及一下摩擦力……

Center+Size:都是Vector3 的属性,共同决定了Cube的位置和大小

【蓝鸥Unity开发基础三】课时15 刚体和Collider_第8张图片

【蓝鸥Unity开发基础三】课时15 刚体和Collider_第9张图片

【蓝鸥Unity开发基础三】课时15 刚体和Collider_第10张图片

 

两个游戏对象如果想要发生碰撞,最基本的条件就是,两个对象身上都有Collider碰撞器,并且至少有一个游戏对象包含刚体组件。

 

有盒形碰撞器,胶囊碰撞器,网格碰撞器,球形碰撞器,车轮碰撞器

【蓝鸥Unity开发基础三】课时15 刚体和Collider_第11张图片