public class ClickAndBoom : MonoBehaviour {
private float BOOMRADIUS = 20.0F;
private float FORCE = 1000.0F;
// Use this for initialization
void Start () {
}
// Update is called once per frame
void Update () {
if (Input.GetMouseButtonDown (0)) {
ClickCube();
}
}
/*
点击物体开始模拟
*/
private void ClickCube(){
RaycastHit raycastHit;
var ray = Camera.main.ScreenPointToRay(Input.mousePosition);
if (Physics.Raycast (ray, out raycastHit)) {
CreateBoom(raycastHit.transform.position);
}
}
/*
模拟爆炸的后的物体碰撞
point为爆炸的中心点
*/
private void CreateBoom(Vector3 point){
Collider[] others = Physics.OverlapSphere (point, BOOMRADIUS);
Rigidbody other;
for (int i = 0; i<others.Length; i++) {
if ((other = others[i].GetComponent<Rigidbody> ())) {
//给在爆炸范围内的物体一个逐渐衰弱的力
other.AddExplosionForce(FORCE,point,BOOMRADIUS);
}
}
}
//由于没有删除掉点击的物体。所以点击的物体竖直向上运动
}