RPG游戏黑暗之光Part5:技能设定与学习
来源:互联网 发布:国民女团网络电影下载 编辑:程序博客网 时间:2024/04/27 17:45
RPG游戏黑暗之光Part5:技能设定与学习
今天新开一章用来讲解技能的创建,首先我们要知道虽然技能是属于人物的,但并不要在人物下创建相关内容,这不单显得冗余,而当涉及到技能学习时也存在诸多不便。我们直接在ui界面中创建系统界面,最后的完成图如下。
这里牵涉到ui部件中的scrollbar,百度即可实现简单使用,这里不过多介绍。
点击学习以后在底部状态栏上显示出来并且按对应按键释放对应技能。
其实你完全可以把技能也当作一个物品来建立,但是每个物品需要自己的脚本来实现打击或者治疗效果,这里我们用一个简单的脚本来讲解比如技能火球术。
public class Skill1Script : MonoBehaviour {public GameObject Skill1;public float skillDistance = 5f;public UISprite Sprite;public float TimeSpeed=2;bool flag = false;// Update is called once per framevoid Update () {if (flag) {Sprite.fillAmount -= (1f / TimeSpeed) * Time.deltaTime;}if (Sprite.fillAmount <= 0.05f){flag = !flag;Sprite.fillAmount = 1;}if (!flag) {if (Input.GetKeyDown (KeyCode.Alpha1)) {GameObject player = GameObject.FindWithTag ("Player");//x,z在player面前//localPosition是父元素下的//然后是消耗mp移到Enemy身上打,-hp然后Destroy//-mpGameObject[] enemys = GameObject.FindGameObjectsWithTag ("Enemy");//这里只是移一下!Vector3 v = new Vector3 (player.transform.position.x, player.transform.position.y + 0.5f, player.transform.position.z);int mp = player.GetComponent<PlayerStatus> ().mp;foreach (GameObject gb in enemys) {float distance = Vector3.Distance (gb.transform.position, v);if (distance <= skillDistance && mp >= 10) {GameObject skill = GameObject.Instantiate (Skill1, v, Quaternion.identity);skill.SetActive (true);skill.GetComponent<Skill1Move> ().SetFlag (true, gb);GetComponent<AudioSource> ().Play ();player.GetComponent<PlayerMover> ().state = PlayerState.Attack1;player.GetComponent<PlayerStatus> ().mp -= 10;flag = !flag;break;}}}}} }
其中的Skill1;是我按1以后释放的gameobject,这个素材可以百度或者淘宝自寻找到,distance即为释放的距离长度,在这个脚本中按1后释放Skill1,然后播放音效到技能cd Destroy物体,细心的读者可能发现这里火球并没有飞起来,原因是我把它放到Skill1中的脚本里。
using System.Collections;using System.Collections.Generic;using UnityEngine; public class Skill1Move : MonoBehaviour {public int speed = 10;private bool flag = false;private GameObject enemy;private GameObject player;private void Start(){player = GameObject.FindWithTag ("Player");}// Update is called once per framevoid Update () {if (flag) {transform.LookAt (enemy.transform);GetComponent<CharacterController> ().SimpleMove (transform.forward * speed);player.transform.LookAt (enemy.transform);if (Vector3.Distance (transform.position, enemy.transform.position) <= 1f) {enemy.GetComponent<WolfBabyScript> ().OnAttacked (10);Destroy (gameObject);}} }public void SetFlag(bool b,GameObject gb){flag = b;enemy = gb;}}
在这里就对火球移动方向进行了设置。
最终的实现效果
部分技能展示
对了在技能cd中涉及到的内容
在update中Sprite.fillAmount需要在视图中修改为Simple才生效
if (flag) {Sprite.fillAmount -= (1f / TimeSpeed) * Time.deltaTime;}
阅读全文
0 0
- RPG游戏黑暗之光Part5:技能设定与学习
- RPG游戏黑暗之光
- unity3d--人物朝向(RPG游戏黑暗之光)
- unity3d--人物移动(RPG游戏黑暗之光)
- unity3d--镜头跟随及控制(RPG游戏黑暗之光)
- RPG游戏黑暗之光Part4:物品模块
- 学习泰课的Unity3D黑暗之光RPG游戏开发(一)——学习目录介绍
- RPG黑暗之光(6)状态栏/技能系统/武器系统/小地图/头像栏
- RPG黑暗之光(7)最终效果
- RPG黑暗之光Part1:场景构建
- RPG黑暗之光Part2:角色创建
- RPG黑暗之光Part3:角色控制
- 黑暗之光游戏制作
- 【Unity3D实战】RPG黑暗之光Scene3:创建游戏运行场景及角色控制
- 【Unity3D实战】RPG黑暗之光:游戏分解及各系统的实现
- RPG黑暗之光(1)开始场景搭建、开始UI
- RPG黑暗之光(5)NGUI实现背包系统初步
- Unity3D-项目总结-RPG黑暗之光单机
- Django缓存系统
- AS 2293.3_2005 (Emergency lighting)应急灯SAA认证
- 如何用c打印出一颗心
- 6.6
- frag嵌套+pull+Xlvdm
- RPG游戏黑暗之光Part5:技能设定与学习
- 数据结构:线性表
- 封装类
- SSM项目之---淘淘商城(第二天)
- java8 JDK1.8 API 中文 翻译版 java帮助文档
- [已解决] java.net.ConnectException: Connection refused: no further information
- 自定义拦截器GET请求POST请求
- 商品管理(批量删除、批量发货、修改、排序)
- daemon-thread