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