void Start()
{
Rigidbody rb = GetComponent
float mass = rb.mass;//质量
float drap = rb.drap;//空气阻力
rb.angularDrag;//角阻力
rb.useGravity;//当前游戏对象是否受到重力影响
rb.isKinematic;//是否使用运动学
rb.freezeRotation;//是否冻结游戏对象的旋转
}
给物体添加力
private Rigidbody r;
void Start()
{
r = GetComponent
}
void Update()
{
r.AddForce(new Vector3(0f,10f,0f));//给当前对象施加一个力
r.AddTorque(new Vector3(0f,10f,0f));//给当前对象添加力矩/扭矩,扭矩可以使物体旋转
r.AddForceAtPosition(new Vector3(0f,10f,0f),new Vector3(0.5f,0.5f,0.5f));//给对象在指定的位置上添加一个力
r.AddExplosionForce(1000f.Vector3.zero,4f);//在指定位置添加一个爆炸力
}
碰撞
void OnCollisionEnter(Collision other)//碰撞开始时会调用一次
void OnCollisionStay(Collision other)//碰撞持续发生时的时候调用
void OnCollisionExit(Collision other)//碰撞结束时调用一次
触发is trigger
void OnTriggerEnter(Collider other)//刚刚进入触发范围时调用一次
{
GameObject.Destroy(gameObject,0.3f);//Desrtroy销毁
}
void OnTriggerStay(Collider other)//持续在触发范围内会一直调用
void OnTriggerExit(Collider other)//离开触发范围时会调用一次
条件
1.两者必须都有碰撞(Collider)
2.移动的物体必须有刚体;
3.被触发的物体必须勾选is trigger
4.触发脚本必须给到被触发的物体上
创建刚体并发射
public GameObject prefab;//产生的物体
public Transform pos;//默认位置
void Update()
{
GameObject clone;//所克隆承接的一个prefab;
clone = GameObject.Instantiate(prefab,pos.position,Quaternion.identity) as GameObject;
//实例化 物体 位置 默认 角度 强制转换成GameObject类型
clone.GetComponent
//获取克隆出来的物体 添加刚体 添加力 轴向 力度 time类赋予速度乘以匀速值
//Time.deltaTime平均值 是0.02;Time.time是以0.02的值递增
}
销毁
Destroy(gameObject);//第一种方法,直接拉入物体
Destory(GameObject.Find("Cube"));//第二种方法,找到物体名称
Destory(GetComponent
Destory(GetComponent<代码名>());//销毁物体的代码(把代码拖入物体,获取代码名)
Destory(gameObject,3);//物体3秒后消失
定时销毁
public float temer;//自定义时间
void Update()
{
timer -= Time.deltaTime;
if(timer <= 0)
{
Destory(gameObject);
}
}
实例化10个物体,每个都间隔2各单位
public Transform prefab;
void Start()
{
int i = 0;
while(i < 10)
{
GameObject.instantiate(prefab,new Vector3(i * 2f,0,0),Quaternion.identity);
i++;
}
}
实例化10个物体,每个都间隔2各单位,并且每个物体X轴旋转45°
public Transform prefab;
void Start()
{
int i = 0;
while(i < 10)
{
GameObject.instantiate(prefab,new Vector3(i * 2f,0,0),Quaternion.Euler(45f,0,0));//Eular欧拉角
i++;
}
}
创建网格
public GameObject prefab;
public float girdx = 5f;//横向
public float girdy = 5f;//纵向
public float spacing = 2f;//物体间隔
void Start()
{
for(int y = 0 ;y < girdy ;y++)
{
for(int x = 0 ;x < girdx ;x++)
{
Vector3 pos = new Vector3(x,0,y) * spacing;
Instantiate(prefab,pos,Quaternion.identity);
}
}
}
创建5 * 5的墙public float x1 = 5f;
public float y1 = 5f;
void Start()
{
for(int y = 0 ;y < y1 ; y++)
{
for(int x = 0 ;x < x1 ;x++)
{
GameObject bj = GameOject.CreatePrimitive(PrimitiveType.Cube);//创建一个cube
bj.transform.position = new Vector3(0,0 + y,0 + x);
}
}
}
生成一定数量的物体,形成一个圆
public GameObject prefab;
public int number = 20;//数量
public float radius = 5f;//半径
void Start()
{
for(int i = 0 ;i < number l;i++)
{
float angle = i * Mathf.PI * 2 / number;//Mathf.PI数学里面的圆周率
Vector3 pos = new Vector3(Mathf.Cos(angle),0,Mathf.Sin(angle)) * radius;
Instantiate(prefab,pos,Quaternion.indentity);
}
}