转载:原文出处
今天为大家带来的是一个简单的小游戏——愤怒的小球。首先来看看效果吧:
当游戏开始时,会在场景中产生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();
- }
- }
- }