Unity3D教程实现攻击扣血的流程.docx

  1. 1、本文档共6页,可阅读全部内容。
  2. 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
Unity3D教程实现攻击扣血的流程

实现攻击扣血的流程这个流程主要实现以下功能:界面上显示玩家当前的总血量,当被其他玩家发射的子弹打中后,会减1格血,血量为0时判定为死亡,会重置玩家的位置到出生点,并且重设血量为最大血量。实现这个逻辑,分了以下几个步骤。1.维护玩家血量相关信息。首先玩家血量要用图形化在界面上显示,首先需要在场景中建立一个GUITexture,这里起名为GUI_heart,来表示当前血量图片。为了控制血量的显示,为GUI_heartf附加了一个控制脚本,名为HeartControl.cs。这个脚本的内容如下:????01using?UnityEngine;02using?System.Collections;03public?class?HeartControl?:?MonoBehaviour?{04????public?Texture2D[]?heartImageArray;05????private?const?int?maxLives?=?5;06????private?static?int?lives?=?maxLives;07????public?static?void?DecreaseLive()08????{09???????lives--;10????????if(lives==0)11????????{12???????????lives=maxLives;13????????????PlayerManager.selfPlayer.position?=?GameObject.Find(SpwanPlayer).transform.position;14????????}15????}16????//?Use?this?for?initialization17????void?Start?()?{18????}19????//?Update?is?called?once?per?frame20????void?Update?()?{21????????if(PlayerManager.selfPlayer!=null)22????????{23???????????guiTexture.enabled?=?true;24????????????guiTexture.texture?=?heartImageArray[lives-1];25????????}26????????else27????????{28???????????guiTexture.enabled?=?false;29????????}30????}31}这里heartImageArray表示不同血量所对应的血量图片,血量用心型图标来显示,5格血就是5颗心。把这个数组声明为public,可以在编辑器中,设置这个数组的尺寸,以及每个入口点所对应的图片,十分方便。maxLives就是最大血量有5格血,lives是当前人物的血量。在每帧更新函数Update()中,首先检查当前玩家的变量是否为空,为空可能是因为是Server端,这种情况下就不需要显示血量,因此将图片设为false:guiTexture.enabled?=?false;如果不为空,那么将根据当前血量的值,把对应数组中的图片赋值给这个guiTexture当前的texture,这样就实现图片随血量值的变化而变化。这里PlayerManager.selfPlayer中的PlayerManager我自己建立的一个全局的静态类,维护了唯一的静态变量private?static?Transform?_selfplayer,代表客户端所对应的玩家自己。这个类可以被所有脚本所访问,访问起来十分方便,实现如下:????01using?UnityEngine;02using?System.Collections;03using?System;04public?static?class?PlayerManager??{05????private?static?Transform?_selfplayer?=?null;06????????public?static?Transform?selfPlayer07????????{08????????????get09????????????{10????????????????return?_selfplayer;11????????????}12????????????set13????????????{14????????????????_selfplayer?=?value;15????????????}16????????}17????}后期随着逻辑的复杂,可以为这个脚本的玩家增加更多的数据来维护。然后是DecreaseLive函数,这个函数可以被外部所调用,给玩家减血,

文档评论(0)

gangshou + 关注
实名认证
内容提供者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档