Closed GoogleCodeExporter closed 9 years ago
粗略的实现了一下血迹功能
-- 1. 事件驱动.当LevelManager接收到GameEventType =
NPCReceiveDamage的时候创建Decal对象.
对于这个,似乎要用GameEvent去做的话,只能
改写LevelManager.GameEvent或者在ScenEventListener里面写(不过这个deca
l
system应该和特定scene,level没有什么关系吧...),可能还缺少DamageP
arameter(如果damagePoint比较大的话,是不是应该有更大量的bloodstr
eam)
-- 2.......
这个可能要在加一个脚本到prefab里面(大概见图),攻击到可以��
�血的单位时候,就按设定好的效果执行(流血/油/绿色液体啊)
-- 3....
这个OnBecameInvisible()事件就能做到了,需要注意的是disable那些��
�必要的camera
Original comment by lightnin...@gmail.com
on 26 Dec 2012 at 2:37
木有图啊...
Original comment by yinyuanq...@gmail.com
on 27 Dec 2012 at 3:20
呃,忘了,大概就是这些内容
可能需要增加 血迹的落地点 这样的设置
(不同的粒子效果喷出来的血,可能会有不同的落地点把...)
Original comment by lightnin...@gmail.com
on 27 Dec 2012 at 3:35
Attachments:
-- 可能需要增加 血迹的落地点 这样的设置
这个落地点,是需要动态计算出来的.
流程:
1. 事件触发
2. 获取受到伤害单位的WORLD POSITION
3. 计算出创建Decal 对象的地面,和墙壁点,计算方式见图.
接下来要解决的问题是,如果单位站在墙角,随机选出来的落地
点又飞到场景之外了,如何避免这种情况?
Original comment by yinyuanq...@gmail.com
on 27 Dec 2012 at 4:31
Attachments:
喷血效果总不会只有一个吧?而且落地点应该是依赖于所使用�
��粒子效果的吧
比如Blood_Pack里面的Splash03粒子效果就是比Splash04小那么一点(��
�血最远距离)
(我意思是,增加落点这样的方法比较简便,就是要自己检测一��
�落点位置而已.
当然,写一个函数来适应不同的粒子效果也可以,对性能影响应
该不大)
另外,
喷的方向和落点不应该是随机的吧,从哪儿攻击就在哪儿流血�
��对吧..
玩家角色(Predator)的GameEventType.PlayerReceiveDamage似乎从来没用过
Original comment by lightnin...@gmail.com
on 27 Dec 2012 at 5:24
--1.
喷血效果总不会只有一个吧?而且落地点应该是依赖于所使用�
��粒子效果的吧
--2.
喷的方向和落点不应该是随机的吧,从哪儿攻击就在哪儿流血�
��对吧..
1. 喷血效果需要配置,
喷血效果对应的Decal效果也是需要配置,但是产生Decal的位置肯
定是需要计算.
2. 方向可以配置,落点是在围绕单位的一个圆内的某一点.
你要考虑的计算函数生成DECAL的问题. 如何在地上产生DECAL?
如果单位靠近墙,如何在墙上产生DECAL ??
Original comment by yinyuanq...@gmail.com
on 27 Dec 2012 at 5:48
使用http://u3d.as/content/edelweiss-interactive/decal-system/36o
这个DECAL SYSTEM做了一个小DEMO
Original comment by lightnin...@gmail.com
on 30 Dec 2012 at 5:34
Attachments:
现在AI架构好像已经把溅血效果做了,而且也没有给LevelManager��
�递事件.
现在与effectdata合并一下
改动如图,代码在google drive
Original comment by lightnin...@gmail.com
on 6 Jan 2013 at 2:38
Attachments:
噢,忘了说,这个直接在Inspector里面配置(AIEditor似乎还不行?)
要改的就是CreateDecalAfterEffect和Decal里面的DecalMaterial
我这里使用的material是自己弄的
Original comment by lightnin...@gmail.com
on 6 Jan 2013 at 2:49
Attachments:
Original comment by yinyuanq...@gmail.com
on 7 Jan 2013 at 9:13
Jeffery,col.apk无法安装,另外,请把整个场景导出成unitypackage上传
(不仅仅是代码)
Original comment by yinyuanq...@gmail.com
on 7 Jan 2013 at 11:34
我的导出unitypackage好像会出错,而且我update新代码的时候好像�
��出现missing monobehavior的问题...
你说的col.apk好像是之前那个旧的是把
Original comment by lightnin...@gmail.com
on 7 Jan 2013 at 11:37
另外,这个decal
system,我虽然还没有完全看完它的全部内容,但是我感觉它不是
很专业,至少比不上A*寻址.
首先是文档有点乱,看Reference.pdf看完了不知道怎么上手,怎么��
�头开始创建一个可用的decal,
另外使用RectangleProjector投射的方式创建decal,有些复杂.
(似乎还有其它的方式,还没有看完)
其实创建decal应该是一个很简单的过程,本质无非就是在一个��
�定的平面上创建一个物体.
我想重新导向一下decal系统的思路.
Original comment by yinyuanq...@gmail.com
on 7 Jan 2013 at 11:39
恩,确实
我也是看example才知道怎么做的,而且我觉得projector有点多余的
样子
等会我再发一个包,里面包含.apk,还有script,场景也有(不建议覆
盖原来的,我这里的环境貌似有点问题的)
Original comment by lightnin...@gmail.com
on 7 Jan 2013 at 12:51
DecalSystem更新.
1. Decal现在已经加入到AI框架中.新增DecalData类.
一个DecalData会在ReceiveDamageData中被引用,引用结构和EffectData相�
��.
public class DecalData
{
public string Name = string.Empty;
#region use global decal object
public bool UseGlobalDecal = true;
public GlobalDecalType GlobalType = GlobalDecalType.HumanBlood_Splatter01_Static;
#endregion
#region use custom decal object
/// <summary>
/// An array here. Randomly select one when creating.
/// </summary>
public Object[] DecalObjects = new Object[]{};
/// <summary>
/// ProjectDirection:
/// Vertical = Decal create on ground.
/// Horizontal = Decal create on wall.
/// </summary>
public HorizontalOrVertical ProjectDirection = HorizontalOrVertical.Vertical;
/// <summary>
/// if DestoryInTimeOut = true, the EffectObject will be destory in %DestoryTimeOut% seconds.
/// </summary>
public bool DestoryInTimeOut = true;
public float DestoryTimeOut = 30;
public float ScaleRate = 1;
public LayerMask ApplicableLayer;
#endregion
}
2.
在使用AIEditor编辑AI单位的过程中,我觉得要求设计者给任何一
个单位都定义一次流血Effect和Decal非常麻烦,例如两个单位都��
�人类士兵,流血效果和Decal其实都是一样的,当时却要分别创建
两次.
所以这里引入了GlobalBloodEffectDecalSystem类,这个类专门用于创建
全局预定义好的特效和Decal.需要注意的是,它仅仅负责那种由�
��害造成的Decal. 如果一个DecalData的UseGlobalDecal
字段为TRUE,则代表它使用全局Decal,否则则会创建单位自定义的
Decal.
对应的代码已经提交.
Original comment by yinyuanq...@gmail.com
on 9 Jan 2013 at 12:56
Attachments:
目前的Decal应该已经满足需要了,Marked close
Original comment by yinyuanq...@gmail.com
on 11 Jan 2013 at 12:05
Original issue reported on code.google.com by
yinyuanq...@gmail.com
on 23 Dec 2012 at 9:39