如何向玩家正前方发射一条射线检测?

[复制链接]
1069 |5
今天小雨转甜 发表于 2023-8-2 08:51:48 | 显示全部楼层 |阅读模式
射线检测要求输入参数起始点和终点,但是我需要向玩家正前方发射一条射线,检测玩家前面的东西该如何处理? forwardVector 好像是以世界坐标为准的,获取不出来正在运动中的角色实时的正前方方向和位置。
回复

使用道具 举报

浅巷 发表于 2023-8-2 09:17:30 | 显示全部楼层
可以参考一下教程: https://learning.ark.online/main ... ing/line-trace.html
其中 const res = Gameplay.lineTrace(loc, loc.clone().add(front.multiply(1000)), true, true); 的front可以获得的是角色实时的正前方方向;loc获得的是角色实时的位置。

同时你可以参考一下https://api-docs.ark.online/grou ... play.html#linetrace
这个是射线检测的API,const res = Gameplay.lineTrace(loc, loc.clone().add(front.multiply(1000)), true, true); 这句代码中第一个值是起始位置,第二个值是结束位置。最后一个boolean值true就是开启可视化绘制,你可以打开看是否符合自己的开发预期。


推荐你看一下这个视频,射线检测相关的讲的都很细。
回复

使用道具 举报

叽里咕噜小胡桃 发表于 2023-8-2 09:46:48 | 显示全部楼层
可以直接在空工程的UIDefault.ts里改写这个方法,multiply括号里的数字是距离
//点击攻击按钮,异步获取人物后执行攻击动作
        AttackBtn.onPressed.add(()=>{
                                Gameplay.asyncGetCurrentPlayer().then((player) => {
                                        this.Character = player.character;

                                        lineTrace(this.Character.worldLocation.clone(), this.Character.worldLocation.clone().add(this.Character.getForwardVector().clone().multiply(500)),true,true)

                                });
                })



回复

使用道具 举报

kk 发表于 2023-8-2 10:02:40 | 显示全部楼层
叽里咕噜小胡桃 发表于 2023-8-2 09:46
可以直接在空工程的UIDefault.ts里改写这个方法,multiply括号里的数字是距离
《---myCode-TypeScript---》 ...

妙呀
回复

使用道具 举报

今天小雨转甜楼主 发表于 2023-8-2 11:28:39 | 显示全部楼层
叽里咕噜小胡桃 发表于 2023-8-2 09:46
可以直接在空工程的UIDefault.ts里改写这个方法,multiply括号里的数字是距离
《---myCode-TypeScript---》 ...

谢谢
回复

使用道具 举报

今天小雨转甜楼主 发表于 2023-8-2 11:29:19 | 显示全部楼层
浅巷 发表于 2023-8-2 09:17
可以参考一下教程: https://learning.ark.online/main-course/programming-scripting/line-trace.html
其 ...

谢谢,需求已解决,开始详细学习
回复

使用道具 举报

72小时热榜
2
【反馈】翻译异常
求助与反馈
16人已阅读
3
编辑器无法正常启动
求助与反馈
42人已阅读
5
邮件系统
游戏开发
70人已阅读
热门版块
快速回复 返回顶部 返回列表