今天为大家带来的是一个简单的小游戏——愤怒的小球。首先来看看效果吧:
当游戏开始时,会在场景中产生36个箱子,当玩家在屏幕上点击鼠标的时候,就会向这个由36个箱子构成的墙面发射一个小球。下面来看如何实现这一效果吧!
using UnityEngine; using System.Collections; public class GameInit : MonoBehaviour { //定义发射小球时的音效源 public AudioSource mAudio; //自动销毁游戏对象的类 private class AutoDestroy : MonoBehaviour { //当离开摄像机范围时触发 void OnBecameInvisible() { Destroy(this.gameObject); } } //定义颜色数组 private Color[] mColors=new Color[]{Color.blue,Color.gray,Color.green, Color.red,Color.yellow,Color.white}; void Start () { //创建36个箱子 for(int i=0;i<6;i++) { for(int j=0;j<6;j++) { //创建Cube GameObject mObject=GameObject.CreatePrimitive(PrimitiveType.Cube); //为Cube赋予颜色值 mObject.renderer.material.color=mColors[Random.Range(0,mColors.Length)]; //设置位置 mObject.transform.position=new Vector3(i,j,1); //添加刚体和自动销毁 mObject.AddComponent<Rigidbody>(); mObject.AddComponent<AutoDestroy>(); } } } void Update () { if(Input.GetMouseButtonDown(0)) { //创建一个小球 GameObject mBall=GameObject.CreatePrimitive(PrimitiveType.Sphere); //设置小球初始化位置 mBall.transform.position=Camera.main.transform.position; //添加刚体结构 mBall.AddComponent<Rigidbody>(); //添加自动销毁 mBall.AddComponent<AutoDestroy>(); //目标位置 Vector3 mTarget = Camera.main.ScreenToWorldPoint(new Vector3(Input.mousePosition.x,Input.mousePosition.y, 1)); //方向向量 Vector3 mDirection = mTarget - Camera.main.transform.position; //设置小球贴图 mBall.renderer.material.mainTexture = (Texture)Resources.LoadAssetAtPath("Assets/Resources/AngryBird.jpg", typeof(Texture)); //为小球施加作用力 mBall.rigidbody.AddForce(mDirection * 10, ForceMode.VelocityChange); //播放发射小球的音效 mAudio.Play(); } } }
Unity3D游戏开发之愤怒的小球,布布扣,bubuko.com
原文:http://blog.csdn.net/qinyuanpei/article/details/21535409