【蓝鸥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的力,持续按1,Cube会上升!

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碰撞器,并且至少有一个游戏对象包含刚体组件。

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

时间: 2024-10-09 11:11:18

【蓝鸥Unity开发基础三】课时15 刚体和Collider的相关文章

蓝鸥Unity开发基础二——课时15 封装和继承

封装 封装是实现面向对象程序设计的第一步 封装就是讲数据.方法等集合在一个个单元中,我们称之为类 封装的意义在于保护代码/数据,屏蔽复杂性 一.封装能够保护代码,数据安全性+封装可以屏蔽复杂性 using System; namespace Lesson_15{    public  class A{    public  void Open(){                    Console.WriteLine ("打开");            }    }       

【蓝鸥Unity开发基础三】课时3 Terrain地形系统【未完】

[蓝鸥Unity开发基础三]课时3  Terrain地形系统[未完] 推荐视频讲师博客:http://11165165.blog.51cto.com/ 一.Terrain地形系统 Terrain地形系统 资源包的导入 场景漫游 立方体是:长宽高1m 二.Terrain地形系统 1.Terrain组件:提升地形/沉降地形工具 点击左键-- 提升地形 点击左键+Shift--沉降地形 选择笔刷的形状.笔刷的大小,笔刷的硬度--绘制地形 2.Terrain:平坦地形工具:设置地形目标高度 平滑地形工具

【蓝鸥Unity开发基础三】课时2 游戏对象和基本操作

[蓝鸥Unity开发基础三]课时2 游戏对象和基本操作 一.首先,让我们先看一下下面的图片--金字塔架构 推荐视频讲师博客:http://11165165.blog.51cto.com/ 一个游戏有多个场景组成, 场景是由多个游戏对象组成, 每一个游戏对象身上由多个组件组成的, 每个组件都是为了完成某个特定的功能! 二.创建一个游戏环境--01 1.快捷键--CTRL+S 2.创建的环境会在视图中显示 3.在Create视图中邮件--选3D Object 4.创建一个--Plane 5.创建一个

蓝鸥Unity开发基础二——课时6 方法

蓝鸥Unity开发基础二--课时6 方法 推荐视频讲师博客:http://11165165.blog.51cto.com/ 对象.方法名(实际参数); Person p=new Person(); P.Say(); 1.带有参数的方法举例 using System; namespace Lesson_06{    class MainClass    {        public class Car{        //l跑        //访问说明符  返回值类型 方法名(参数列表){语句

蓝鸥Unity开发基础二——课时3 访问修饰符

[蓝鸥Unity开发基础二]课时3 访问修饰符 一.访问修饰符 public --公共的,在哪里都能用 private  --私有的,只能够在当前机构体重使用,其他任何地方都不能 访问修饰符举例说明 using System; namespace Lesson_03{           struct Point2{        //public--公共的,在哪里都能用        public float x;        //private  --私有的,只能够在当前机构体重使用,其他

【蓝鸥Unity开发基础三】课时5 Unity组件开发

推荐视频讲师博客:http://11165165.blog.51cto.com/ Unity组件开发 本节课我们来学习Unity组合,首先需要先了解一下Unity的工程和应用程序的关系: 一.Unity的工程和应用程序 Assets里面放的是项目所需要的资源 Library里面存放的是所需要的库文件 ProjectSettings里面存放的是工程设置文件 Temp里面存放的是临时文件 Lesson_05项目文件夹内容 二.项目框架 二.组件开发 回到Unity中来演示一下: Transform组

【蓝鸥Unity开发基础三】课时9 Vector3

一.Vector3 using UnityEngine;using System.Collections; public class Test : MonoBehaviour { //Vector3就是一个类,表示向量,向量即有大小又有方向的量    void Start () {        Vector3 v = new Vector3 ();        //x,y,z分别是三个方向上的分量        float x = v.x;        float y = v.y;    

【蓝鸥Unity开发基础三】课时16 碰撞和触发事件

推荐视频讲师博客:http://11165165.blog.51cto.com/ 一.碰撞和触发事件 之前我们已将学习了刚体和碰撞器,今天要学习的是碰撞和触发事件. 碰撞事件 发生碰撞的两个物体必须都带有Collider 发生碰撞的两个物体至少有一个带有刚体 发生碰撞的两个物体必须有相对运动 1.首先先创建一个Plane,重置一下Transfrm,然后把Scale的 x z改成10 2.创建一个Cube1,把Transform重置一下,然后把Position y改成0.5,让Cube1而处于地面

【蓝鸥Unity开发基础三】课时12 预设体

推荐视频讲师博客:http://11165165.blog.51cto.com/ 预设体 预设体能够使游戏对象和资源重复使用 相同的游戏对象可以使用同一个预设体来创建 对预设体进行修改后,所有游戏对象都会相应改变 把预设体作为的一个模板原型,在使用的过程中,我们可以把预设体拖至场景中来创建一个新的游戏对象,能够让我们的游戏对象和资源能重复利用,并且对于预设体进行修改,可以对当前所以的游戏对象发生一样的修改. 接下来我们在Unity中来演示一下 1.预设体的创建--创建一个Cube--创建一个材质