unity 实现技能释放
要实现技能释放其实很简单,说白了就是在指定的位置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 实现技能释放的更多相关文章
- UGUI之Image使用以及技能释放CD
顾名思义:Image就是用来显示图片的 Image中Image组件中有一个重要的熟悉:Image type
- 关于Unity3d粒子系统的小发现(天堂3技能释放)
导入系统给的粒子包,发现了一个问题:系统的粒子都有移动轨迹. 而自己新建的空粒子系统却没有这个功能.顺便也复习一下粒子系统. Particle System (粒子系统): Duration(持续时间 ...
- Unity NGUI实现技能CD效果
unity版本:4.5.1 NGUI版本:3.6.5 脚本代码:C# 在游戏中经常要实现技能的CD效果,NGUI中已经实现了这个功能,即在button上创建一个半透明的Sprite实现这个功能. 首先 ...
- Unity——技能系统(二)
Unity技能系统(二) Unity技能系统(一) Demo展示: 五.技能管理和释放 1.CharacterSkillSystem 技能系统类,给外部(技能按钮,按键)提供技能释放方法: 技能释放逻 ...
- GJM : 基于Actor模式的c#网络游戏服务器的实现和Unity游戏客户端的连接 [转载]
感谢您的阅读.喜欢的.有用的就请大哥大嫂们高抬贵手"推荐一下"吧!你的精神支持是博主强大的写作动力以及转载收藏动力.欢迎转载! 版权声明:本文原创发表于 [请点击连接前往] ,未经 ...
- 使用Unity制作游戏关卡的教程(一)
转自: http://gamerboom.com/archives/74131 作者:Matthias Zarzecki 我正在制作<Looking For Group – The Fork O ...
- Unity Android设备的输入
Unity Android设备的输入 1依据屏幕位置输入 有的时候也许是为了整个有些风格的干净,减少屏幕上的UI图标,以至于摒弃了虚拟按键这种常用的输入方式.为了替代虚拟按键的输入方式而选择了依据点击 ...
- Unity2D项目-平台、解谜、战斗! 1.5 Player框架、技能管理组件
各位看官老爷们,这里是RuaiRuai工作室,一个做单机游戏的兴趣作坊. 前文提到,凡是有"攻击"语义的对象,在游戏中,我们给予其一个"CanFight"组件予 ...
- ARPG游戏技能系统设计
ARPG游戏的技能的前端表现, 主要指的是人物动作和特效表现, 从普遍意义上讲,大致可以分为三个阶段:起手.飞行.碰撞(爆炸). [特效可见性判断] 1.[attacker & victim] ...
随机推荐
- docker配置阿里云的仓库源以及安装docker-compose
[root@localhost mnt]# cat /etc/docker/daemon.json { "registry-mirrors": ["https://3la ...
- linux命令详解之du命令
du命令概述du命令作用是估计文件系统的磁盘已使用量,常用于查看文件或目录所占磁盘容量.du命令与df命令不同,df命令是统计磁盘使用情况,详见linux命令详解之df命令.du命令会直接到文件系统内 ...
- 006-tomcat 多实例安装、appBase和docBase、Context说明
一.多实例部署 主要是为了充分利用服务器资源,并且可以交叉部署应用.主要做法可以有使用docker部署,多实例部署. 多实例多应用:多个 Tomcat 部署多个不同的项目.这种模式在服务器资源有限,或 ...
- qt linux 打包
本文在银河麒麟上成功运行,程序类型:Qt控制台,使用到的Qt外库:mysql数据库 1.环境一共有两台,1是编译机[装有Qt.数据库],2是运行机[纯净机] 2.在编译机上安装Qt.mysql,我这里 ...
- ubuntu16.04+cuda8.0+cudnn6.0安装mxnet(极简!+成功!)
安装MXNet 1.安装 CUDA8.0对应的mxnet版本是mxnet-cu80(同理如果是CUDA9.0对应版本则是mxnet-cu90). 如果pip安装过慢,请参考 Ubuntu16.10下配 ...
- 创建Windows Service
基本参照使用C#创建Windows服务,添加了部分内容 目录 创建Windows Service 可视化管理Windows Service 调试 示例代码 创建Windows Service 选择C# ...
- jq同一页面内容切换
$(function() { //选择标题显示 初始显示内容及样式 $('.right-content .right-item').eq(0).addClass('showcontent') $('. ...
- 16 SpringMVC 的请求参数的绑定与常用注解
1.SpringMVC 绑定请求参数 (1)支持的数据类型 基本类型参数: 包括基本类型和 String 类型POJO 类型参数: 包括实体类,以及关联的实体类数组和集合类型参数: 包括 List 结 ...
- php数组到json的转变
今天做项目遇到个问题,一个接口,输出二维数组,前端说他要的数据格式是数组,而不是对象,就像上个数据一样,我当时就懵逼了,,,什么对象?我明明输出的是数组啊...然后我看了看我返回的json串,emmm ...
- golang 之 sql
golang提供了sql包查询数据 建立连接 导入第三方包 import( "database/sql" _"github.com/go-sql-driver/mysql ...