请选择 进入手机版 | 继续访问电脑版

DNF阿拉德游戏论坛

 找回密码
 立即注册
地下城公益服 复古的阿拉德大陆,经典怀旧列车马上发车! 开始游戏 70DNF版本 免费点券泡点送,深渊装备随你刷! 开始游戏
复古80版本 经典耐玩,永不关服,养老必备 开始游戏 70泰拉版本 快乐的阿拉德勇士都在这里玩耍! 开始游戏
经典70复古 原汁原味,找回童年,长久耐玩,永不关服 开始游戏 【打金服】 纯正70版本打金服,开放拍卖行、金币交易所! 开始游戏
2021新年特惠10怒气/天,充值最多赠送35%! 自助购买 不删档内测 限时内测不删档,公测送大礼包! 开始游戏
2021新年特惠10怒气/天,充值最多赠送35%! 自助购买 2021新年特惠10怒气/天,充值最多赠送35%! 自助购买
2021新年特惠10怒气/天,充值最多赠送35%! 自助购买 重生70纯复古 DNF70满级版本:玩法复古,上手简单,轻松找回童年! 开始游戏
备案老域名 SEO排名专用:COM 53元/年,CN域名 26元/年 限时活动 开始游戏 推广优化工具 引流大数据营销监控,搜索引擎、抖音、知乎内参 开始游戏
菜菜60版本 不删档测试,9月11号正式开服,新手上线送SS武器 开始游戏 海外服务器 新朋友「轻」松上云,老朋友免费加「量」 开始游戏
★腾讯云活动★ 1核2G 88/年,2核4G 230/年,最高送588 开始游戏 SF开服一条龙 DNF开服一条龙100元起:价格低,品质高,讲信誉! 开始游戏
★阿里云活动★ 1H2G1M 84/年,2H4G3M 221/1年,新人送礼 开始游戏 信用卡办理 城市银行京东白条内部通道,无需电核秒下卡! 开始游戏
查看: 1031|回复: 0

[PVF] 台服DNF关于技能nut动态旋转的一些思路写法探究

[复制链接]

签到天数: 1 天

[LV.1]无主之魂

2

主题

2

帖子

11

积分

初入阿拉德

Rank: 1

积分
11
怒气
1
声望
4
战力
0
发表于 2020-11-8 18:39:54 | 显示全部楼层 |阅读模式
动态旋转并不是ani写死的旋转,而是,他能根据不同的坐标能有不同的旋转角度。诸如
疾风骤雨,男冰洁的冰枪,瞎子的雷云
等等要使用动态旋转。这个直接可以在冰魄弓里抄到写法
083141tth6k41u064zz6xj.png

083141gdz3fddvf22dm4vm.png

083141cgyoyodcor9jysod.png

083142m19evzivy1iivv18.png



如果是使用了accel写法的移动,他有很明确的开始坐标和最后结束坐标的概念,所以可以引用
编写好的函数,将开始坐标和最后坐标写入参数可获得旋转的参数然后
旋转
  1. function getRorateAngleByCurrentPos(obj,x1,y1,z1,x2,y2,z2)
  2. {
  3. if(!obj) return;


  4. local X = x1;
  5. local Y = y1;
  6. local Z = z1;


  7. local posX = x2;
  8. local posY = y2;
  9. local posZ = z2;


  10. local offset = posX - X;


  11. local distance = sq_GetDistance( X, Y - Z, posX, posY - posZ, true);


  12. local w = posX - X;
  13. if(w < 0) w = -w;


  14. local h = (posY - posZ) - (Y - Z);
  15. local width = sq_Abs(posX - X);
  16. local angle = sq_Atan2( h.tofloat(), width.tofloat());


  17. {
  18. angle = -angle;
  19. }


  20. local nRevision = distance;


  21. local cos = nRevision.tofloat() * sq_Cos(angle);
  22. local sin = nRevision.tofloat() * sq_Sin(angle);


  23. local nX = sq_Abs( cos.tointeger() );
  24. local nY = sq_Abs( sin.tointeger() );


  25. return angle;


  26. }
复制代码

函数(旋转)
083251l39g4mthnk4txkpg.png

这样就能完成效果
但是对于只有开始坐标,根本不知道最后坐标的,典型的ptl移动,破冰飞刃,
做法是,在接收数据那里存储一下开始坐标。而后在proc里,当特效运行超过了50毫秒后,取得坐标
,和存储的开始坐标进行运算,得出旋转坐标然后再设置,但是这个函数的旋转,他是有朝向问题的。
而破冰飞刃释放后所有的朝向都是玩家朝向(往玩家后方射击但是朝向还是玩家朝向,所以会导致,
明明往后射,结果旋转却是往前的窘况,所以比对x轴坐标,使其在旋转180度为反向。)


而后是男法的雷光链写法,用于了瞎子天雷波动剑
083309veysvz9luhbx6bsb.png



然而这个写法会导致当两个被链接的目标距离过远时,链子拉的老长的问题的。
所以在后期也是考虑要舍弃的写法
083333bx554vdkk8z4lhs8.png



(玩家和怪物的链子、怪物与怪物之间的链子,会很明显的发现不一样)
而目前用于的,我发现的写法,是
一个ani旋转到对应的坐标,然后只改变ani的x大小,不要改变y轴大小,用于实现了怪物的线性警示条
083414pvnevvxl7blm7x1k.png



和,剑鬼的一个技能效果,目前写法也尝试在逐渐用于其他地方
(瞬移至剑鬼替身身边的效果)


083414artzmrrxr06jf7wg.png

083414wvcty48svnteytyw.png

083450hy82pb3n8z8525wn.png

还有就是关于尾巴、拖尾(tail)的写法想法,目前也在逐步做尝试。
083454dwngbj64uxw0lq6b.png


这类写法目前的思路可能就算贪吃蛇写法
因为accel写法的移动效果,很容易确定过去的路程
写法大致是,假定5个尾巴的临时特效,然后最主体获得10毫秒之前的坐标,和自身坐标
两个坐标为运算进行旋转而后第一个尾巴设置10毫秒之前的坐标。(获得n毫秒之前的坐标,均以主体为主)
第二个尾巴,10毫秒之前的坐标和20毫秒之前的坐标,进行旋转,连线,设置20毫秒之前的坐标,依次类推
第三个尾巴,20毫秒之前的坐标和30毫秒之前的坐标,进行旋转,连线,设置30毫秒之前的坐标。即可
当然,这个10毫秒越短,就越平滑。越长,就越拖尾越长


这些都是很细节写法,不过,细节写法也挺重要的,不然技能看起来可能从某方面会很尬
“邪恶如同灯光下的阴影,即使看不见也会存在。”——歌兰蒂斯
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

QQ|Archiver|手机版|小黑屋|DNF阿拉德游戏论坛 ( 渝ICP备13007431号1

GMT+8, 2021-7-28 18:09 , Processed in 0.229630 second(s), 13 queries , File On.

Powered by Discuz! X3.3 网站地图 标签大全 Auther by PAnoEAde & 地下城与勇士论坛

© 2001-2013 Comsenz Inc.

快速回复 返回顶部 返回列表