using UnityEngine;
using System.Collections;
public class GameControl : MonoBehaviour {
float Timer =0;
public GameObject coinPrefab;
void Start () {
}
void Update () {
CreateCoin ();
}
//1秒钟生成一个金币
void CreateCoin(){
Timer += Time.deltaTime;
if (Timer >= 1) {
Timer = 0;
//随机生成金币的位置
Vector3 coinPosition = new Vector3 (Random.Range (-4.7f, 4.7f),4.8f,-0.5f);
//创建金币
GameObject coin=Instantiate(coinPrefab,coinPosition,Quaternion.identity) as GameObject;
Destroy (coin, 5);
}
}
}
操作步骤:
新建一个小球coin(为其添加一个Rigidbody),并将其设成预制体coin;
新建一个空物体,将上述代码赋给空物体,然后将预制体coin添加到代码上;(此时运行场景会自动生成小球)
新建一个Cube,将如下代码赋到Cube上,并为其添加Rigidbody(此时运行场景可以实现移动Cube,与小球碰撞,并且控制台输出所接住小球的个数)
注意:想要实现触发检测,所以需要给小球或Cube添加一个 Is Trigger (此时可以实现题目要求)
using UnityEngine;
using System.Collections;
public class CubeScript : MonoBehaviour {
public float speed;//定义移动速度
void Start () {
}
// Update is called once per frame
void Update () {
CubeMotion ();
}
void CubeMotion(){
//左右移动cube,不能超过plane的范围
float hor =Input .GetAxis("Horizontal");
transform.position += Vector3.right * hor * speed * Time.deltaTime;
//约束移动的区间[-4,4]
if (transform.position.x <=-4) {
//当x的位置处于上方x=-4的位置时,直接跳转到下方-4的位置。
transform.position = new Vector3 (-4, transform.position.y, transform.position.z);
}else if (transform.position.x >= 4) {
//同理,当x处于上方4是,直接跳转到4的位置。
transform.position = new Vector3 (4, transform.position.y, transform.position.z);
}
}
//触发检测
int count = 0;
void OnTriggerEnter(Collider other){
if (other.tag == "coin") {
//other.gameobject获取当前触发检测的游戏物体
Destroy (other.gameObject);
//打印金币数
count++;
Debug.Log ("接了" + count + "金币");
}
}
}
碰撞发生的条件.png
网友评论