找回密码
 立即注册

QQ登录

只需一步,快速开始

查看: 631|回复: 14

关于屏幕斩击的思路

[复制链接]

4465

主题

4万

回帖

13万

积分

出神入化

积分
139504
发表于 2025-7-25 11:14:10 | 显示全部楼层 |阅读模式
两个技术范例
https://www.bilibili.com/video/BV1jM411o7Bp/
https://www.bilibili.com/video/BV1C64y1P7kD/
关于斩击首先从如何让斩击出现来讲,用act+nut怎么出现斩击有两个思路,一般思路就是由act新建特效,一个头和尾,两个配对后,由nut的152292新建斩击特效,即用nut新建临时特效,这个临时特效需要nut去计算头和尾的旋转角度和长度。这样到后面只需要考虑头和尾的新建即可。具体实现逻辑是
我在lst里注册一个特效id为1的特效为头(只是举例子),然后注册特效id为2的特效为尾。这两个特效都看不见(ani里没有写任何图像调用,为DUMMY特效),当头id1新建出来后,act就会去找尾巴即2
,头1的act里会写上which,passive index =>2 ,找到了后将他save object,同时因为头找到了尾巴,新建152292(以尾巴的坐标去新建),然后对应的nut ani的调用切换成chain ani,这样就能新建出来斩击。
(脑子里想想,我定义了一个头和一个尾,然后我拿nut把这两个头和尾用ani绘制出来就行了。这样我压根就不用考虑什么角度长度问题了。)
但是,现在有个问题,如果我同时新建了3个头和3个尾巴,我怎么让这三个头和尾巴匹对上呢?让他们斩击角度和长度是我想要的呢?这里我拿了个鬼思路,我把这三个头的z轴分别为0,1,2,同理尾巴的z轴为0,1,2,让相同z轴的相互匹配上就行了。同理,如果想多个斩击,就接着扩充。
然后现在怎么触发斩击,接着上面,因为我头已经找到尾巴了,通过act去找到了我对应的尾巴,并用act将他记录下来了。那么我如果想触发斩击,我需要头拿到我记录的那个特效新建一个
[CREATE PASSIVEOBJECT]
[INDEX]
152472
[PARTICLE FILENAME]
``
[LEVEL]
-1
[POS]
10005
[USE MAP POS]
[FOLLOWING TARGET]
[/CREATE PASSIVEOBJECT]
就能斩击了,只要新建这个152472即可直接触发屏幕斩击(100是基准长度,如果写成50,代表只有一半的斩击长度,0是默认,而5是斩击的宽度(左右为5),)
[TRIGGER]
[LIMIT]
1
[IF]
`TIME`
[+]
1700
[<]
[GET TIME]
[/IF]
[WHICH]
[LOAD TARGET]
42
[CHECKED NO]
[>]
0
[DO BEHAVIOR]
[CHECKUP OBJECT]
1
[/TRIGGER]
[BEHAVIOR]
[DIM]
`TIME`
[=]
[GET TIME]
[/DIM]
[CREATE PASSIVEOBJECT]
[INDEX]
152472
[PARTICLE FILENAME]
``
[LEVEL]
-1
[POS]
10005
[USE MAP POS]
[FOLLOWING TARGET]
[/CREATE PASSIVEOBJECT]
[/BEHAVIOR]
x长度,y不用,z为最大间隔。
注意必须使用following target
而152472特效nut是如何写的?这里讲一下只涉及最基本的思路和数学算法。
首先我们扩展一个数学功能,我希望有一个函数,给一个点的xy和四边形的四个点坐标,
能直接判断点是否在一个四边形内(四边形的四个点坐标由我定义),如果能够判断出来就完成了第一步
(这一步可以使用面积法来算。这是最简单的一个方法)
上面成功后,那么我们就可以通过上面的头和尾,来构建一个四边形,(脑子里想象一个头和尾组成的线,然后拿到宽度比如5,对外扩展,就形成了一个矩形(具体如何拿到这个矩形需要数学方面的函数判断了),然后将这个矩形,去检测对象的身上的坐标点(取决于你如何定义坐标点,越密集越准确))
function rayCheckScreenPosObject(checkObjectX,checkObjectY,len,startScreenX,startScreenY,endScreenX,endScreenY)
{
local startSP = Point2D(startScreenX,startScreenY);
local endSP = Point2D(endScreenX,endScreenY);
local angle = get360Angle(startSP,endSP);
local offsetX1 = sq_CosTable(angle.tointeger() + 90 ) * len;
local offsetX2 = sq_CosTable(angle.tointeger() - 90 ) * len;
local offsetY1 = sq_SinTable(angle.tointeger() + 90 ) * len;
local offsetY2 = sq_SinTable(angle.tointeger() - 90 ) * len;
local p1 = Point2D(startScreenX + offsetX1,startScreenY + offsetY1);
local p2 = Point2D(startScreenX + offsetX2,startScreenY + offsetY2);
local p3 = Point2D(endScreenX + offsetX1,endScreenY + offsetY1);
local p4 = Point2D(endScreenX + offsetX2,endScreenY + offsetY2);
if (pointIsIn4PointArea(checkObjectX, checkObjectY, p1.getPX(), p1.getPY(), p2.getPX(), p2.getPY(), p4.getPX(), p4.getPY(), p3.getPX(), p3.getPY()))
return true;
return false;
}
(我的nut扩展的现在有Point2D类对象,所以后面我更倾向用类对象来操纵)
扩展出来后,让nut去objectmanager扫描头的敌人,然后传入敌人的坐标参数,如果返回true就发送一次打击即可,注意,头得有atk,加一个即可。
这样你就无需考虑什么旋转角度,长度,只需要考虑头和尾新建在哪个坐标上就行了。
阿荣社区欢迎你(bbs.vul7.com)
回复

使用道具 举报

3929

主题

3万

回帖

12万

积分

出神入化

积分
128312
发表于 2025-7-25 11:14:27 | 显示全部楼层
虽然不懂,但是大为震撼,感谢分享。

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?立即注册

×
阿荣社区欢迎你(bbs.vul7.com)
回复 支持 反对

使用道具 举报

4465

主题

4万

回帖

13万

积分

出神入化

积分
139504
 楼主| 发表于 2025-7-25 11:14:53 | 显示全部楼层
拉尔戈的屏幕斩击思路,你可以想,那个四边形对外扩展的时候,一个边是宽度是5,另一个边可以填成很大的数就能实现了。
阿荣社区欢迎你(bbs.vul7.com)
回复 支持 反对

使用道具 举报

4465

主题

4万

回帖

13万

积分

出神入化

积分
139504
 楼主| 发表于 2025-7-25 11:15:09 | 显示全部楼层
遥遥领先
阿荣社区欢迎你(bbs.vul7.com)
回复 支持 反对

使用道具 举报

3929

主题

3万

回帖

12万

积分

出神入化

积分
128312
发表于 2025-7-25 11:15:52 | 显示全部楼层
虽然不懂,但是大为震撼,感谢分享。
阿荣社区欢迎你(bbs.vul7.com)
回复 支持 反对

使用道具 举报

4628

主题

4万

回帖

14万

积分

出神入化

积分
141479
发表于 2025-7-25 11:16:09 | 显示全部楼层
这就是大神的世界吗
阿荣社区欢迎你(bbs.vul7.com)
回复 支持 反对

使用道具 举报

4559

主题

4万

回帖

14万

积分

出神入化

积分
140891
发表于 2025-7-25 11:16:58 | 显示全部楼层
花佬nb!
阿荣社区欢迎你(bbs.vul7.com)
回复 支持 反对

使用道具 举报

3996

主题

3万

回帖

12万

积分

出神入化

积分
128919
发表于 2025-7-25 11:17:43 | 显示全部楼层
遥遥领先
阿荣社区欢迎你(bbs.vul7.com)
回复 支持 反对

使用道具 举报

4710

主题

4万

回帖

14万

积分

出神入化

积分
141330
发表于 2025-7-25 11:17:53 | 显示全部楼层
阿荣社区欢迎你(bbs.vul7.com)
回复 支持 反对

使用道具 举报

4638

主题

4万

回帖

14万

积分

出神入化

积分
142905
发表于 2025-7-25 11:18:29 | 显示全部楼层
谢谢🌸🌸
阿荣社区欢迎你(bbs.vul7.com)
回复 支持 反对

使用道具 举报

发表于 2025-7-25 11:19:22 | 显示全部楼层
花佬真强啊


本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?立即注册

×
阿荣社区欢迎你(bbs.vul7.com)
回复 支持 反对

使用道具 举报

3996

主题

3万

回帖

12万

积分

出神入化

积分
128919
发表于 2025-7-25 11:20:14 | 显示全部楼层
nb

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?立即注册

×
阿荣社区欢迎你(bbs.vul7.com)
回复 支持 反对

使用道具 举报

3996

主题

3万

回帖

12万

积分

出神入化

积分
128919
发表于 2025-7-25 11:20:22 | 显示全部楼层
膜拜
阿荣社区欢迎你(bbs.vul7.com)
回复 支持 反对

使用道具 举报

4710

主题

4万

回帖

14万

积分

出神入化

积分
141330
发表于 2025-7-25 11:20:51 | 显示全部楼层

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?立即注册

×
阿荣社区欢迎你(bbs.vul7.com)
回复 支持 反对

使用道具 举报

4559

主题

4万

回帖

14万

积分

出神入化

积分
140891
发表于 2025-7-25 11:21:09 | 显示全部楼层
遥遥领先!
阿荣社区欢迎你(bbs.vul7.com)
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

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