找回密码
 立即注册

QQ登录

只需一步,快速开始

查看: 533|回复: 14

关于屏幕斩击的思路

[复制链接]

3322

主题

2万

回帖

10万

积分

出神入化

积分
100945
发表于 7 天前 | 显示全部楼层 |阅读模式
两个技术范例
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,加一个即可。
这样你就无需考虑什么旋转角度,长度,只需要考虑头和尾新建在哪个坐标上就行了。
回复

使用道具 举报

2713

主题

2万

回帖

8万

积分

出神入化

积分
88921
发表于 7 天前 | 显示全部楼层
虽然不懂,但是大为震撼,感谢分享。

本帖子中包含更多资源

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

×
回复 支持 反对

使用道具 举报

3322

主题

2万

回帖

10万

积分

出神入化

积分
100945
 楼主| 发表于 7 天前 | 显示全部楼层
拉尔戈的屏幕斩击思路,你可以想,那个四边形对外扩展的时候,一个边是宽度是5,另一个边可以填成很大的数就能实现了。
回复 支持 反对

使用道具 举报

3322

主题

2万

回帖

10万

积分

出神入化

积分
100945
 楼主| 发表于 7 天前 | 显示全部楼层
遥遥领先
回复 支持 反对

使用道具 举报

2713

主题

2万

回帖

8万

积分

出神入化

积分
88921
发表于 7 天前 | 显示全部楼层
虽然不懂,但是大为震撼,感谢分享。
回复 支持 反对

使用道具 举报

3427

主题

2万

回帖

10万

积分

出神入化

积分
102700
发表于 7 天前 | 显示全部楼层
这就是大神的世界吗
回复 支持 反对

使用道具 举报

3364

主题

2万

回帖

10万

积分

出神入化

积分
101737
发表于 7 天前 | 显示全部楼层
花佬nb!
回复 支持 反对

使用道具 举报

2770

主题

2万

回帖

8万

积分

出神入化

积分
89956
发表于 7 天前 | 显示全部楼层
遥遥领先
回复 支持 反对

使用道具 举报

3447

主题

2万

回帖

10万

积分

出神入化

积分
102039
发表于 7 天前 | 显示全部楼层
回复 支持 反对

使用道具 举报

3466

主题

2万

回帖

10万

积分

出神入化

积分
103366
发表于 7 天前 | 显示全部楼层
谢谢🌸🌸
回复 支持 反对

使用道具 举报

发表于 7 天前 | 显示全部楼层
花佬真强啊


本帖子中包含更多资源

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

×
回复 支持 反对

使用道具 举报

2770

主题

2万

回帖

8万

积分

出神入化

积分
89956
发表于 7 天前 | 显示全部楼层
nb

本帖子中包含更多资源

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

×
回复 支持 反对

使用道具 举报

2770

主题

2万

回帖

8万

积分

出神入化

积分
89956
发表于 7 天前 | 显示全部楼层
膜拜
回复 支持 反对

使用道具 举报

3447

主题

2万

回帖

10万

积分

出神入化

积分
102039
发表于 7 天前 | 显示全部楼层

本帖子中包含更多资源

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

×
回复 支持 反对

使用道具 举报

3364

主题

2万

回帖

10万

积分

出神入化

积分
101737
发表于 7 天前 | 显示全部楼层
遥遥领先!
回复 支持 反对

使用道具 举报

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

本版积分规则

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