Mass质量 尽量0.1~10
Drag阻力,float,任意方向都受阻力
Use Gravity是否使用重力
Is kinematic是否遵循动力学
Collision Detection碰撞检测模式
1.AngularVelocity(角速度):表示刚体的角速度向量,数据类型为Vector3,该变量的方向既为刚体旋转轴方向,旋转方向遵循左手定则。
2.Velocity(位移速度):表示物体的位移速度值。
3.CenterOfMass(重心):通过调低物体的重心,可以使物体不因为其他物体的碰撞或者作用力而倒下。
4.DetectCollisions(碰撞检测开关):表示物体是否能够与其他物体产生碰撞效应。
5.InertiaTensor(惯性张量):描述物体转动惯量,类型为Vector3
using UnityEngine;
using System.Collections;
public class ro : MonoBehaviour {
public float rorateSpeed = 90f;
public float moveSpeed = 3f;
// Use this for initialization
void Start () {
//GetComponent<Rigidbody> ().angularVelocity = Vector3.up * rorateSpeed;
//GetComponent<Rigidbody> ().velocity = Vector3.forward * moveSpeed;
GetComponent<Rigidbody> ().centerOfMass = Vector3.down * 0.5f;
GetComponent<Rigidbody> ().detectCollisions = false; //false不检测碰撞
}
// Update is called once per frame
void Update () {
}
}
if (Input.GetKeyDown (KeyCode.Space)) {
//ForceMode默认是Force,施加力时,受质量影响
//GetComponent<Rigidbody>().AddForce(Vector3.up*300f,ForceMode.Force);
//Acceleration忽略本身质量,按默认值1
//GetComponent<Rigidbody> ().AddForce (Vector3.up * 100f,ForceMode.Acceleration);
//VelocityChange 忽略质量
GetComponent<Rigidbody> ().AddForce (Vector3.up* 300f, ForceMode.VelocityChange);
//钢体某个位置施加力
GetComponent<Rigidbody> ().AddForceAtPosition (Vector3.up* 300f,transform.position+new Vector3 (0.5f,-0.5f,0));
}
}
using UnityEngine;
using System.Collections;
public class CollisionSC : MonoBehaviour {
public Collider red;
public Collider blue;
// Use this for initialization
void Start () {
//忽略两个碰撞器之间的碰撞,true,忽略,false,不忽略
Physics.IgnoreCollision (red, blue, true);
}
// Update is called once per frame
void Update () {
}
}
忽略两层碰撞器之间的碰撞,layers +两个层blue、red,将blue球都加到layout的blue层,同理红球。Edit-project Setting-Physics,blue和red的对勾取消。
//开始发生碰撞,参数是碰撞到的碰撞体
void OnCollisionEnter(Collision other){
Debug.Log (other.gameObject.name);
}
//碰撞中
void OnCollisionStay(Collision other){
}
//碰撞结束
void OnCollisionExit(Collision other){
}
Is Trigger触发器,只触发方法,如碰撞功能等需要自己实现。
//触发器,碰撞时触发Enter方法
void OnTriggerEnter(Collider other){
Debug.Log (other.gameObject.name);
}
//碰撞中
void OnTriggerStay(Collider other){
}
//碰撞结束
void OnTriggerExit(Collider other){
}