Unity3dGUI简单用户图形界面设计Word下载.docx
- 文档编号:14709715
- 上传时间:2022-10-24
- 格式:DOCX
- 页数:13
- 大小:126.71KB
Unity3dGUI简单用户图形界面设计Word下载.docx
《Unity3dGUI简单用户图形界面设计Word下载.docx》由会员分享,可在线阅读,更多相关《Unity3dGUI简单用户图形界面设计Word下载.docx(13页珍藏版)》请在冰豆网上搜索。
privateTransformHP;
//游戏结束
privateTransformText;
//玩家
privateGameObjectPlayer;
voidStart()
{
//初始化界面
Grade=transform.Find("
Grade"
);
HP=transform.Find("
HP"
Text=transform.Find("
Text"
Text.guiText.enabled=false;
//获取玩家对象
Player=GameObject.Find("
Player"
}
voidUpdate()
if(Player!
=null)
//更新UI
Grade.guiText.text="
得分:
"
+Player.GetComponent<
Player>
().Grade.ToString();
HP.guiText.text="
生命:
().MaxHP.ToString();
if(HP.guiText.text=="
0"
)
Text.guiText.enabled=true;
//立即复活
if(Input.GetKey(KeyCode.Y))
{
Application.LoadLevel("
Main"
}
//退出
if(Input.GetKey(KeyCode.N))
Application.Quit();
}
二、玩家飞机
玩家飞机的创建和背景的创建时相同的,这里我们不再多说。
玩家飞机需要完成移动、发射、碰撞的事件处理。
为此我们编写下面的脚本:
publicclassPlayer:
//飞机的移动速度
publicfloatMoveSpeed;
//飞机的最大生命值
publicintMaxHP=100;
//定义子弹对象
publicGameObjectBullet;
//定义子弹发射位置
privateTransformBulletPosL;
privateTransformBulletPosR;
[HideInInspector]
publicintGrade=0;
voidStart()
BulletPosL=this.transform.Find("
BulletPosL"
BulletPosR=this.transform.Find("
BulletPosR"
if(Input.GetKey(KeyCode.A))
transform.Translate(Vector3.left*Time.deltaTime*(-MoveSpeed));
if(Input.GetKey(KeyCode.D))
transform.Translate(Vector3.left*Time.deltaTime*MoveSpeed);
if(Input.GetKey(KeyCode.W))
transform.Translate(Vector3.forward*Time.deltaTime*(-MoveSpeed));
if(Input.GetKey(KeyCode.S))
transform.Translate(Vector3.forward*Time.deltaTime*MoveSpeed);
//按下空格键,发射子弹
if(Input.GetKey(KeyCode.Space))
Instantiate(Bullet,BulletPosL.transform.position,Quaternion.Euler(newVector3(0,1,0)));
Instantiate(Bullet,BulletPosR.transform.position,Quaternion.identity);
#region减血
publicvoidHit(intValue)
if(MaxHP>
0)
MaxHP-=Value;
}else
Destroy(this.gameObject);
#endregion
#region增加分数
publicvoidAdd(intValue)
Grade+=Value;
在这段代码中,Bullet是我们的子弹对象,它从飞机的两个子弹发射位置BulletPosL、BulletPosR发射,向屏幕上方按照一定的速度缓缓移动,当子弹与敌人碰撞时,子弹对象将销毁,同时敌人生命值减少。
Bullet对象对应于我们的一个Prefab。
BulletPosL、BulletPosR对应于飞机上的两个位置。
如图:
我们的子弹Bullet是一个绑定了脚本的Capsule。
它的代码定义如下:
publicclassBullet:
//定义子弹的移动速度
publicfloatMoveSpeed=10F;
//定义子弹的销毁时间
publicfloatDestroyTime=2.0F;
//定义子弹对敌人的伤害值
publicintDamage=2;
//玩家飞机
voidStart()
Player=GameObject.Find("
//移动子弹
transform.Translate(Vector3.up*MoveSpeed*Time.deltaTime);
//碰撞事件捕捉
voidOnTriggerEnter(CollidermCollider)
if(mCollider.gameObject.tag=="
Enemy"
//敌人减血
mCollider.gameObject.GetComponent<
Enemy>
().Hit(Damage);
//我方得分
Player.GetComponent<
().Add
(1);
//销毁子弹
Destroy(this.gameObject);
//当离开摄像机范围时触发销毁事件
voidOnBecameInvisible()
Destroy(this.gameObject);
三、敌人飞机
在我们的游戏中共有三种敌机,我们先将它们制作成预设。
然后通过敌机生成器不断地生成敌机。
和子弹相反,我们希望敌机从屏幕上方以一定速度向下移动,当碰到玩家飞机或者子弹时,将减少生命值。
为此,我们这样定义敌机的脚本:
publicclassEnemy:
//移动速度
publicfloatMoveSpeed=1.5F;
//爆炸
publicGameObjectExplosion;
//最大生命值
//移动飞机
{
//如血量不低于0,则敌人飞机掉血
//产生爆炸效果
Instantiate(Explosion,transform.position,Quaternion.Euler(newVector3(90,180,0)));
//销毁敌机
//如果与玩家飞机遭遇,则双方减血
if(mCollider.gameObject.tag=="
//敌机掉血
this.Hit
(2);
//玩家飞机掉血
TransformmPlayer=mCollider.gameObject.transform.Find("
mPlayer.GetComponent<
().Hit
(2);
voidOnBecameInvisible(
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- Unity3dGUI 简单 用户 图形界面 设计