RPG游戏《黑暗之光》流程介绍与代码分析之(十五):主角受攻击效果以及场景切换

十五章:主角受攻击效果以及场景切换

本篇博客将《黑暗之光》开发的最后工作做完,包括之前未实现的主角被击效果,以及实际运行中的场景切换。

15.1 主角的受攻击效果

我们参照WolfBaby中的受攻击效果( 链接),制作主角的对应效果
    public float missRate = 0.25f;public GameObject HUDTextPrefab;private GameObject HUDTextGO;public GameObject playerHUDTextGO;private HUDText showText;private UIFollowTarget followTarget;public AudioClip missSound;public void BeDamage(int attackValue){int defence = Equipment._instance.defense + ps.defense + ps.defense_plus;float damage = attackValue * (200 - defence)/200 ;//float damage = int.Parse (temp);if (damage <= 1){damage = 1;}float value = Random.Range (0f, 1f);if (value < 0.5){//damage    }else{//missAudioSource.PlayClipAtPoint(missSound,transform.position);showText.Add("Miss",Color.blue,1);}}
并对相应物体赋初值

伤害效果的设置如下
    public GameObject playerBody;    //指定角色bodyprivate Color normalColor;void Awake(){normalColor = playerBody.renderer.material.color;}if (value < 0.5){//damage    showText.Add("-" + damage,Color.black,1);ps.hp_remain -= damage;StartCoroutine (ShowPlayerRed ());}IEnumerator ShowPlayerRed(){playerBody.renderer.material.color = Color.red;yield return new WaitForSeconds (0.5f);playerBody.renderer.material.color = normalColor;}

15.2 主角的受伤和死亡效果

接下来实现角色的受伤效果,hp小于0时死亡。首先在PlayerAttack的PlayerState中添加死亡状态
public enum PlayerState{normalWalk,normalAttack,skillAttack,Death    //死亡状态
}
并在hp小于0时
            if(ps.hp_remain <= 0){state = PlayerState.Death;}
在Update()中,当state = PlayerState.Death时,我们有
        else if(state == PlayerState.Death){animation.CrossFade(aniName_death);}

之后我们在WolfBaby的AutoAttack()中攻击主角并调用主角的BeDamage()函数,
if(aniName_nowAttack == aniName_normalAttack){if(attackTimer >= normalAttackTime){    target.GetComponent<PlayerAttack>().BeDamage(attackValue);    //访问Bedamage造成伤害aniName_nowAttack = aniName_idle;animation.CrossFade(aniName_idle);}}else if(aniName_nowAttack == aniName_crazyAttack){if(attackTimer >= crazyAttackTime){target.GetComponent<PlayerAttack>().BeDamage(attackValue);aniName_nowAttack = aniName_idle;animation.CrossFade(aniName_idle);}}
即实现了主角的受伤效果

在每次攻击完毕之后,我们要调用人物面板的FaceUI的SetFaceProperty()属性,以更新状态。在AutoAttack()函数,我们添加
FaceUI._instance.SetFaceProperty ();    
就可以生效,并且当角色死亡时,我们需要取消怪物的攻击以及人物的移动功能,因此在AutoAttack中加入
PlayerState playerAttackState = target.GetComponent<PlayerAttack> ().state;    //用playerAttackState,避免与state重名if (playerAttackState == PlayerState.Death){target = null;state = WolfBabyState.Idle;return;}
以及PlayerDirection的Update()中
if (pa.state == PlayerState.Death) return;
即可实现受伤以及死亡效果。

15.3场景间的切换

最后一步是将整个流程连接起来,通过初始化载入界面——>角色创建界面——>实际游戏场景,也就是Scene之间的切换。在开始动画里,我们有New Game和Load Game两个功能。
在File——>Build Setting中,导入场景

在控制New Game的按键脚本中,添加
    public void PressNewGame(){    PlayerPrefs.SetInt("dataFromSave",0);Application.LoadLevel (1);    //加载上图红框中的1场景}
即可进入角色创建界面
在角色创建场景中,需要保存所选角色和角色名,因此在OK按钮脚本中添加
    public void PressConfirmButton(){PlayerPrefs.SetString ("storeName", nameInput.value);    //存储名字PlayerPrefs.SetInt ("storeCurrentIndex", selectedIndex);    //存储角色    Application.LoadLevel (2);    //加载下一个场景}
在GameSetting中创建一个脚本为LoadRole,控制加载
public class LoadRole : MonoBehaviour {public GameObject magicianPrefab;    //获取两个角色的prefabpublic GameObject swordmanPrefab;void Awake(){int index = PlayerPrefs.GetInt ("storeCurrentIndex");    //得到输入的名字和角色string name = PlayerPrefs.GetString ("storeName");GameObject playerGO = null;if(index == 0){playerGO = GameObject.Instantiate(magicianPrefab) as GameObject;    //实例化}else if(index == 1){playerGO = GameObject.Instantiate(swordmanPrefab) as GameObject;}playerGO.GetComponent<PlayerStatus> ().name = name;    //通过实例化的  playerGO修改名字信息}}
就可以正常创建,角色名称等信息也正常显示。

总结:至此,游戏的基本功能都已实现,大致了解了整个游戏的框架以及实现方法。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.rhkb.cn/news/28363.html

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Unity实现王者荣耀登陆界面动画背景

我呢&#xff0c;特别爱打王者荣耀。 而最近几个版本的更新中,王者荣耀的登录背景变成了动画背景,看着很有动感炫酷,这里来看下王者荣耀是怎么个效果。 这里找的一个B站UP主的视频,因为现在官方不知道为啥换了换背景&#xff0c;虽然他这个不是官方自制的吧,是自己修改的游戏…

Unity 之 ShaderGraph 实现火焰效果入门级教程

Unity 之 ShaderGraph 实现火焰效果入门级教程 前言一&#xff0c;效果展示二&#xff0c;原理介绍三&#xff0c;实现效果四&#xff0c;使用示例五&#xff0c;完整图示 前言 若你的工程还没有进行基础配置&#xff0c;请查看我的博文Unity 之 ShaderGraph入门使用详解&#…

Unity RPG 黑暗之光 问题记录 下(64-110 技能、装备商店、头像栏、快捷栏、敌人攻击系统、玩家攻击系统)

黑暗之光 64-73技能系统 数据读取 数据 表 黄色枚举&#xff0c;红色没有的 数据 文本 数据 读取 背包时是itemList&#xff0c;读取属性时各有不同&#xff0c;无法统一&#xff0c; 这种方式是为了方便读取&#xff0c;所有需要的数据表都可以在DataHub上读取到&#x…

Unity官方案例噩梦射手开发总结<一> 角色的攻击功能实现

愉悦的寒假生活总是会猝不及防地迎来尾声&#xff0c;这也意味着我大一生活的进度条已经过半了。幸运的是&#xff0c;在我某位优秀的学长的带领下&#xff0c;我完整地开发出来了unity的官方案例噩梦射手并基本实现所有功能&#xff0c;也是让我这个大一的苟蒻积攒了不少的新知…

GAMES202-Shadow总结概括

截图均来自于闫令琪老师的GMAES202-Shadow&#xff0c;本文在于对课程内容进行总结以及加上自己的理解&#xff0c;希望帮助同学们加深对课程内容的理解&#xff0c;如有谬误请各位指正 复习本节需要的基本知识 1. Shadow Mapping 为了获得一张Shadow Mapping&#xff0c;需要…

暗黑破坏神:不朽 unity mmo arpg资源分包精讲

unity大型游戏资源管理——分包 视频讲解&#xff1a;点击观看 unity mmo arpg 暗黑破坏神&#xff1a;不朽 是一个大型的重度游戏&#xff0c;该游戏资源已经超过10G 所以它用了资源分包技术减少下载时间。 首包只包含基础资源&#xff0c;在玩家玩第一关的时候&#xff0c;后…

股票卖出技巧及原则,你了解哪些

股票卖出技巧及原则&#xff0c;你了解哪些&#xff1f;有句股谚说&#xff0c;“会买的是徒弟&#xff0c;会卖的是师傅&#xff0c;会空仓的是祖师爷”。以前都是把大部分精力放在了选股和如何买股上面&#xff0c;而对如何卖股票太忽视了。难怪总是出不了师&#xff0c;小学…

通达信破底翻选股公式,用缠论底分型进行优化

上次在写《通达信破底翻形态选股公式&#xff0c;选出破底之后再翻回的股票》这篇文章时&#xff0c;编写破底翻选股公式就考虑使用缠论底分型&#xff0c;但是底分型的包含关系较为复杂&#xff0c;不容易处理&#xff0c;只能暂时搁置&#xff0c;采用了一种简单的方式&#…

股票大作手操盘术[图解]

目录 第一章&#xff1a;投机是一项挑战 第二章 何时入场才是好时机 第三章 追随领头羊 第四章 手里的钱财 第五章 关键点 第六章 百万美元的大错 第七章 三百万美元的盈利 第八章 利弗莫尔市场要决 杰西•利弗莫尔为什么能在投机事业中取得巨大成功&#xff0c;这…

【通达信指标公式】主力博弈分时指标,分时图抓日内弱转强牛股

GHYJKU:BETWEEN((CLOSE*1)/(SUM(AMOUNT,BARSCOUNT((CLOSE*1)))/SUM(VOL*100,BARSCOUNT((CLOSE*1)))),1.05,0.95); VBNH:IF(GHYJKU0,MA((CLOSE*1),BARSCOUNT((CLOSE*1))),(SUM(AMOUNT,BARSCOUNT((CLOSE*1)))/SUM(VOL*100,BARSCOUNT((CLOSE*1))))); 紫色跟风:EXPMA((CLOSE/VBNH),…

ChatGPT写代码之——CodeWhisperer在VS Code下如何安装

一、安装 1. 在VS Code扩展中搜索AWS 点安装就安装好了 #二、配置 1. 点击状态栏出现的AWS 选择add New Connection 选择Use a personal email to sign up and sign in with AWS Builder ID 选择Copy Code for AWS builder ID 跳转到浏览器 2. 在浏览器上一步步用自己的邮…

计算机程序设计类论文,计算机编程论文

计算机编程论文 介绍:本栏目是计算机和编程和论文相关的论文例文,免费教你怎么写关于计算机编程的论文提供相关文献资料。 【摘 要】本探究经过问卷调查、现场采访、走访调查、查阅文献资料等方法对河南省各大高校计算机专业大学生的学习情况(特别是编程能力)进行了调查和研。 …

爱丁堡计算机专业硕士世界排名,爱丁堡大学计算机世界排名

导读&#xff1a;,伴随着科技与经济的高速发展&#xff0c;计算机技术专业成为一门热门的专业&#xff0c;越来越受到人们的欢迎&#xff0c;学校的师资力量和教育水平&#xff0c;也直接成为影响我们选择高校的原因之一。 伴随着科技与经济的高速发展&#xff0c;计算机技术专…

爱丁堡大学计算机专业alevel,爱丁堡大学alevel要求?

原标题&#xff1a;爱丁堡大学alevel要求&#xff1f; 爱丁堡大学接受A-level和国际文凭课程的直接申请&#xff0c;每个学位课程都必须达到特定标准的要求才能入学。例如&#xff1a;申请爱丁堡大学商学院本科课程A-level要求AAA-ABB&#xff0c;兽医学(5年制)A-level要求为AA…

革微信的命,要靠“聊天即挖矿”?

广告诱惑我们追求名车服饰,从事自己憎恨的工作,为的就是买堆根本没用的狗屁东西。 ——Tyler Durden,《搏击俱乐部》 2019年1月15日,注定是一个不平凡的日子,这一天,3家公司揭秘了酝酿已久的社交产品——分别是罗永浩的聊天宝,王欣的马桶MT,张一鸣的多闪。目的只有一个…

用AI重构骨架,打造未来感IP体验经济

我国网文市场目前拥有近2000万位作家、4.9亿名读者。 如果将庞大的网文行业比作一个江湖&#xff0c;那么拥有2.4亿月活用户的阅文集团&#xff08;HK00772&#xff0c;股价33.2港元&#xff0c;市值338.06亿港元&#xff09;&#xff0c;称得上是“天下第一大派”。 “第一大…

NLP-预训练模型-GPT系列:GPT-1(2018-06)、GPT-2(2019-02)、GPT-3(2020-05)、InstuctGPT(2022-01)、chatGPT(2022-11)

GPT1:Imporoving Language Understanding By Generative Pre-training GPT2:Lanuage Models Are Unsupervised Multitask Learners GPT3:Language Models Are Few-shot Learners GitHub:https://github.com/openai/gpt-3 从GPT三个版本的论文名也能看出各版本模型的重点…

后端学习路线(包含博主买的课程)(持续更新中...)

快速了解Java体系(尚硅谷雷神主讲): Java技术栈 前端学习路线 博主已购买此网站的永久会员&#xff0c;含有大量付费资源&#xff0c;需要的私聊&#xff1a; 666资源站-666资源站 学习建议&#xff1a; 开发过程中&#xff0c;建议结合ChatGPT开发&#xff0c;减少重复工作…

GPT全家桶再添一员!看论文神器,ResearchGPT,可立即试用

文&#xff5c;Pine 发自 凹非寺源&#xff5c;量子位 科研人员福音&#xff01;专门和论文对话的“ChatGPT”来了。 懒得看论文&#xff1f;没关系&#xff0c;直接让这个工具帮你看&#xff0c;有什么问题直接问它就好了。 而你全程要做的就只有上传论文和问问题。 但又感觉心…

副业是刚需?分享几个程序员接外包私活的网站

经常看到某某程序员接了个项目开发&#xff0c;工作之余轻轻松松赚了钱还顺带提升了技术&#xff1b;或者看到某大佬又发表了一篇程序员技术提升稿件&#xff0c;阅读点赞收藏三连发&#xff0c;这个月的零花钱又不愁了...但自己只是一名普普通通的程序员&#xff0c;能找到这样…