【蓝鸥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碰撞器,并且至少有一个游戏对象包含刚体组件。
有盒形碰撞器,胶囊碰撞器,网格碰撞器,球形碰撞器,车轮碰撞器