首页 > 代码库 > 【蓝鸥Unity开发基础三】课时15 刚体和Collider

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

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

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

一、刚体

技术分享

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

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

 

技术分享

 

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

技术分享

然后我们给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));




        }
    
    }
}

技术分享

 

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


        }
    
    }
}

 

技术分享

 

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

有刚体都会加Collider

 

 

技术分享




技术分享

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

Box Collider 属性介绍GameObject

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

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

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

技术分享

技术分享

技术分享

 

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

 

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

技术分享

 


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