当前位置: 首页 > news >正文

如何写一个可以做报价计算的网站上饶高端网站建设

如何写一个可以做报价计算的网站,上饶高端网站建设,做网站建设的联系电话,网站开发哪里接业务玩家血量控制 血条UI玩家Canvas下的Slider血量逻辑控制 子弹攻击掉血子弹发射者的区分玩家受伤逻辑子弹碰撞检测 效果 血条UI 和之前我们前面介绍的玩家武器弹夹UI的思路是一样的,跟详细的细节可以参考博客Unity3D装弹和弹夹UI显示。 玩家Canvas下的Slider 之前玩…

玩家血量控制

  • 血条UI
    • 玩家Canvas下的Slider
    • 血量逻辑控制
  • 子弹攻击掉血
    • 子弹发射者的区分
    • 玩家受伤逻辑
    • 子弹碰撞检测
  • 效果

血条UI

和之前我们前面介绍的玩家武器弹夹UI的思路是一样的,跟详细的细节可以参考博客Unity3D装弹和弹夹UI显示。

玩家Canvas下的Slider

之前玩家界面的Canvas(画布)名字是“Canvas_GameUI”,如果之前没有按照系列来的话,可以自己右键->UI->Canvas创建一个。

在Canvas_GameUI下面,右键->UI->Slider,创建一个滑动条。重命名Slider为“HPSlider”,方便阅读和项目管理。

对Slider进行简化,把Handle Slider Area删了,滑动条末尾小球用不上。把Fill Area中的Fill拖到和Backgroud平级,Fill Area作用不大可以删掉只是更好约束了Fill的strech。
在这里插入图片描述
调整Fill和Background都为上下左右全伸展。
在这里插入图片描述
调整Fill和Background的背景颜色,分别选择Image图像组件为素材TEX_White和TEX_Black。然后调整Fill的Image图像组件颜色为红色。
在这里插入图片描述
让血条常驻左下角,通过修改属性中的锚点为左下角,并调整到合适的位置和合适的位置。可以参考弹夹UI的位置坐标和大小,做一个对称的效果。
在这里插入图片描述
血量UI就做好了。

血量逻辑控制

打开PlayerController 的代码,添加如下变量。

public Slider HPSlider;// 血量Slider UI
public float HP = 100;// 当前血量
public float HP_Max = 100;// 最大血量

在Start函数的时候进行一些HPSlider的初始化工作。

void Start()
{if (HPSlider){HPSlider.maxValue = HP_Max;HPSlider.value = HP;}
}

保存代码回到Unity中,把HPSlider拖到代码上。

子弹攻击掉血

之前我们写过敌人攻击玩家的逻辑,但是并没有给子弹附加让玩家掉血的效果。
之前子弹的逻辑是生成之后,碰撞到的物体如果是敌人就让敌人掉血。

现在开始子弹除了要区别碰撞到的是敌人和玩家,还要判断子弹是谁发射出来的。
玩家发出子弹对敌人才有用,敌人发出的子弹对玩家才有用。

子弹发射者的区分

BulletController文件中,在Class外面添加一个枚举类型enume,记录子弹发出者。
设置为publice,这样别的代码也能调用。

// 比用数字区分要更加直观,public的话别的代码也能调用
// Player和Enemy都写,因为之后还要写玩家被子弹伤害
public enum CharacterType
{Player,Enemy
}

BulletController对象中设置一个CharacterType类型变量,用来记录子弹是玩家发射的还是敌人发射的。

在玩家发射子弹和敌人发射子弹的时候,给子弹设置对应的CharacterType,用来记录发射者是什么类型。
WeaponController:

GameObject CreateBullet()
{GameObject obj = Instantiate(bullet, shootPoint);obj.GetComponent<BulletController>().characterType = CharacterType.Player;// characterType赋值obj.GetComponent<BulletController>().bulletPool = bulletPool;return obj;
}

EnemyWeaponController:

GameObject CreateBullet()
{GameObject obj = Instantiate(bullet, shootPoint);obj.GetComponent<BulletController>().characterType = CharacterType.Enemy;// characterType赋值obj.GetComponent<BulletController>().bulletPool = bulletPool;return obj;
}

玩家受伤逻辑

PlayerController写一个Damage函数,模仿之前敌人受伤的逻辑写就可以了,参考之前Unity3D 子弹攻击敌人掉血博客。

单独写一个Damage函数是为了方便子弹碰撞检测调用用的。

Damage函数逻辑如下,每次受伤之后让HP减少即可,暂时先不考虑HP为0后怎么办,这个涉及到游戏管理,也就Game Over,后面会补充的。目前暂时HP为0后,HP条就不变化了。

思路为,每次受伤之后让HP减少,减少为0后不变化。
PlayerController:

public void Damage(float damage)
{if (HP > 0){HP -= damage;if (HPSlider)HPSlider.value = HP;}
}

子弹碰撞检测

子弹碰撞检测时候识别一下发出者和碰撞对象。
发出者是玩家,碰撞对象是敌人,就让敌人掉血,子弹销毁;
发出者是敌人,碰撞对象是玩家,就让玩家掉血,子弹销毁。

private void OnCollisionEnter(Collision collision)
{if (collision.gameObject.CompareTag("Enemy")){if (characterType == CharacterType.Player){collision.gameObject.GetComponent<EnemyController>().Damage(attackNum);Destroy(this.gameObject);}}else if (collision.gameObject.CompareTag("Player")){if (characterType == CharacterType.Enemy){collision.gameObject.GetComponent<PlayerController>().Damage(attackNum);Destroy(this.gameObject);}}else{Destroy(this.gameObject);}
}

效果

在这里插入图片描述

http://www.yayakq.cn/news/295083/

相关文章:

  • 甘肃省省经合局网站建设的通知我想开网站
  • 佛山网站建设专业的公司自己做网站除了域名还要买什么
  • jquery网站源码做网站的数据库的设计
  • sql网站模板专业网站建设策划
  • 国内电商网站html源码乐清门户网站建设
  • 长寿网站建设公司做卡贴和果冻贴的网站
  • 做正规网站营销型网站建站系统
  • 网站建设类型免费快速建站网站
  • 重庆 网站设计点击精灵seo
  • 中国电力建设企业协会网站网站建设费挂什么科目
  • 淘宝客网站模板购买广州网站改版
  • 建设酒店网站ppt用买的服务器 做网站
  • 做网站中显示链接中内容网站群系统建设标准
  • 赵县住房和城乡建设局网站首页新闻发布会新闻通稿
  • 保定网站建设价格网站建设公司销售招聘
  • 网站建设推广小程序河北智能网站建设平台
  • 拓客网站建设移动端网站咋做
  • 东软网站建设方案程序开发工程师需要哪些能力
  • 做soho一定要做网站吗公众号图片wordpress
  • 建筑工程东莞网站建设中国建筑设计
  • 城乡建设部门户网站百度认证平台
  • 电子商务网站建设过程报告网站建设步骤实践报告
  • 网站模板织梦免费网站编辑 教程
  • 网站推广需要数据整改吗宁波网站建设详细策划
  • 西宁网站建设的企业一条龙建站
  • 怎么做正规网站青海建设局网站
  • 手机电脑网站建设短视频企业信用信息查询公示系统浙江
  • 网站开发怎么赚钱做国外购物的网站怎么发货
  • 小榄网站建设推广嵌入式软件开发工程师培训
  • 简单网站如何制作宁陵做网站