要实现技能释放其实很简单,说白了就是在指定的位置Instantiate一个对应的例子特效。我走的弯路主要在寻找这个指定位置上。

对于指向性技能就不多说了,因为是有确切目标的(当然首先判断下技能能不能对目标施放等等),可以直接instantiate。

这里说下非指向技能,比如lol里曙光女神的R技能。

其实实现也很简单,之前想麻烦了(比日说在角色要释放技能的时候做一个设置为3d的ugui,然后再在ui上判断技能释放位置,

比如说将鼠标位置转为3d坐标(这个实现下边有。。),再比如想用时间系统像ui那样直接拖拽,反正饶了很多弯)

好吧,我最后的实现是通过射线做的,在Update里边时刻检测鼠标位置,然后鼠标抬起位置就是技能释放的位置(也就是粒子创建的位置)

为了便于观察(比如说你按着R就会出现一个圈然后是一个通过鼠标移动控制释放位置)我创建了一个2D的Sprite来显示释放位置(当然做成了预设..)。

下图为创建的场景。就Plane表示地图,Capsule表示角色好了。。。

直接上脚本吧,注释应该还是蛮详细的...我给挂在Plane上了...

public class Test : MonoBehaviour
{ public GameObject particle;//粒子特效预设
private RaycastHit hit;
private Ray ray;
private GameObject capsule;//角色
private bool keydown;//判断是否按下对应技能键
private GameObject par;//要创建的例子(要释放的技能)
public GameObject firesprite;//2D Sprite的预设
private GameObject fire;//要创建的Sprite // Use this for initialization
void Start()
{
capsule = GameObject.Find("Capsule"); } void Update()
{
// Vector3 gameposscreen = Camera.main.WorldToScreenPoint(capsule.transform.position);
// Vector3 mouseposworld = Camera.main.ScreenToWorldPoint(new Vector3( Input.mousePosition.x,Input.mousePosition.y,gameposscreen.z));
// capsule.transform.position = new Vector3(mouseposworld.x, 1,mouseposworld.z);//这几句就是把鼠标的屏幕坐标转为世界坐标的...主要是鼠标的
世界坐标跟物体在同一个xoz平面上,也就是y一样。
if (Input.GetKeyDown(KeyCode.A))
{
keydown = true; fire = GameObject.Instantiate(firesprite, Vector3.zero, Quaternion.identity);//在这里创建Sprite
fire.transform.Rotate(new Vector3(90, 0, 0));//旋转成水平方向 }
if (keydown)
{
if (Input.GetMouseButton(0))
{
ray = Camera.main.ScreenPointToRay(Input.mousePosition);
if (Physics.Raycast(ray, out hit))//射线检测
{
if (hit.collider != null)
{
var coll = new Vector3(hit.point.x, hit.point.y, hit.point.z);//射线检测的位置
fire.transform.position = new Vector3(coll.x, 1, coll.z);//付给Sprite
}
}
}
if (Input.GetMouseButtonUp(0))
{
par = GameObject.Instantiate(particle, fire.transform.position, Quaternion.identity);//创建粒子特效(释放技能

          Destroy(fire);
          Destroy(par,5f);//摧毁

            }
}
} }

  我这个粒特效是PlayOnAwake的,如果不是瞬发技能(比如小法师的E)可以在粒子或者通过脚本设置。

unity 实现技能释放的更多相关文章

  1. UGUI之Image使用以及技能释放CD

    顾名思义:Image就是用来显示图片的 Image中Image组件中有一个重要的熟悉:Image type

  2. 关于Unity3d粒子系统的小发现(天堂3技能释放)

    导入系统给的粒子包,发现了一个问题:系统的粒子都有移动轨迹. 而自己新建的空粒子系统却没有这个功能.顺便也复习一下粒子系统. Particle System (粒子系统): Duration(持续时间 ...

  3. Unity NGUI实现技能CD效果

    unity版本:4.5.1 NGUI版本:3.6.5 脚本代码:C# 在游戏中经常要实现技能的CD效果,NGUI中已经实现了这个功能,即在button上创建一个半透明的Sprite实现这个功能. 首先 ...

  4. Unity——技能系统(二)

    Unity技能系统(二) Unity技能系统(一) Demo展示: 五.技能管理和释放 1.CharacterSkillSystem 技能系统类,给外部(技能按钮,按键)提供技能释放方法: 技能释放逻 ...

  5. GJM : 基于Actor模式的c#网络游戏服务器的实现和Unity游戏客户端的连接 [转载]

    感谢您的阅读.喜欢的.有用的就请大哥大嫂们高抬贵手"推荐一下"吧!你的精神支持是博主强大的写作动力以及转载收藏动力.欢迎转载! 版权声明:本文原创发表于 [请点击连接前往] ,未经 ...

  6. 使用Unity制作游戏关卡的教程(一)

    转自: http://gamerboom.com/archives/74131 作者:Matthias Zarzecki 我正在制作<Looking For Group – The Fork O ...

  7. Unity Android设备的输入

    Unity Android设备的输入 1依据屏幕位置输入 有的时候也许是为了整个有些风格的干净,减少屏幕上的UI图标,以至于摒弃了虚拟按键这种常用的输入方式.为了替代虚拟按键的输入方式而选择了依据点击 ...

  8. Unity2D项目-平台、解谜、战斗! 1.5 Player框架、技能管理组件

    各位看官老爷们,这里是RuaiRuai工作室,一个做单机游戏的兴趣作坊. 前文提到,凡是有"攻击"语义的对象,在游戏中,我们给予其一个"CanFight"组件予 ...

  9. ARPG游戏技能系统设计

    ARPG游戏的技能的前端表现, 主要指的是人物动作和特效表现, 从普遍意义上讲,大致可以分为三个阶段:起手.飞行.碰撞(爆炸). [特效可见性判断] 1.[attacker & victim] ...

随机推荐

  1. C++ std::map 屏蔽排序

    转载:https://blog.csdn.net/sendinn/article/details/96286849 最近在项目中用标准库中的关联性容器map,但知道map默认升序的,但在一个需求时又不 ...

  2. Nginx配置proxy_pass转发/路径问题

    proxy_ignore_client_abort on; #不允许代理端主动关闭连接 upstream的负载均衡,四种调度算法 #调度算法1:轮询.每个请求按时间顺序逐一分配到不同的后端服务器,如果 ...

  3. 使用JSP的fmt标签实现国际化支持 - smart-framework ; smart-plugin-i18n

    使用JSP的fmt标签实现国际化支持   Smart-framework框架使用smart-plugin-i18n插件来完成国际化处理,原理相同,使用过滤器进行参数设置. ============== ...

  4. golang几种常用配置文件使用方法总结(yaml、toml、json、xml、ini)

    原文连接: https://blog.csdn.net/wade3015/article/details/83351776 yaml配置文件的使用方法总结 首先介绍使用yaml配置文件,这里使用的是g ...

  5. jQuery 取值操作

    模板使用: https://startbootstrap.com/themes/sb-admin-2/ 使用的 bootstrap 模块 ,上面的这个网站可以下载 select 取值 <sele ...

  6. 配置ogg从Oracle到PostgreSQL的同步复制json数据

    标签:goldengate postgresql oracle json 测试环境说明 Oracle:Windows 8.1 + Oracle 12.2.0.1.0 + GoldenGate 12.3 ...

  7. JavaScript 图片与Base64数据互相转换脚本

    JavaScript 图片与Base64数据互相转换脚本 注: 转换过程中注意跨域问题.测试页是否支持相关标签创建.dom结构. 方法一:非Html 5使用FileReader 使用XMLHttpRe ...

  8. testng失败自动重试

    使用的监听类有:IRetryAnalyzer.TestListenerAdapter.IAnnotationTransformer public class Retry implements IRet ...

  9. EasyNVR摄像机网页无插件直播方案H5前端构建之:如何区分PC端和移动端

    背景分析 随着互联网基础设施建设的不断完善和发展,带宽的不断提速,尤其是光纤入户,4G/5G/NB-IoT各种网络技术的大规模商用,视频随时随地可看.可控的诉求越来越多,尤其是移动应用技术和前端技术的 ...

  10. 004 Thymeleaf学习笔记

    1.Thymeleaf概述 SpringBoot并不推荐使用jsp,但是支持一些模板引擎技术:Freemarker.Thymeleaf.Mustache. 简单说, Thymeleaf 是一个跟 Ve ...