Unity3D游戏开发之愤怒的小球

        今天为大家带来的是一个简单的小游戏——愤怒的小球。首先来看看效果吧:


Unity3D游戏开发之愤怒的小球_第1张图片

       

       当游戏开始时,会在场景中产生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)