作者FSAC00840116 (NightGoD)
看板MH
标题Re: [闲聊] 月迅新技能「奇袭」的验证影片
时间Sat Aug 13 13:07:46 2022
物体原点(Object Origin)用来表示一个物体在三维空间(3D Space)中的位置,以此
原点向外三个方向延伸的XYZ轴(XYZ Axis)一般用来表示物体的前後、左右、上下。
每个游戏引擎对轴线的命名不一,例如:上在Unity里是Y轴,在Unreal则是Z轴。
原点和XYZ轴构成物体的矩阵(Matrix),可以表示物体在空间中的位置(Translation)、
方向(Rotation)、和大小(Scale),示意图:
https://i.imgur.com/UGxSORK.jpg
https://i.imgur.com/aV4ajCz.png
理论上物体原点可以在任何位置,但实践上通常会在
质量中心的垂直线上,
不仅符合直觉,也有利於物理引擎的运算,至於为什麽要放在脚边,因为只要把原点
放在地板上,就能很自然地「站」在地上,很方便吧。
试想一下,今天游戏设计师跑来跟工程师解释这个新技能,并要求实做出来,你觉得
工程师会把全部的魔物模型拿出来一一定义後背的位置,还是直接拿每只魔物都有的
原点? 所以我大胆
推测,以上面图为例:
只要猎人的原点在魔物原点的YZ平面後,就算触发效果,通俗地讲就是站在
Y轴线後面啦。
在讨论如何计算前,先来看看一题游戏业界面试时的经典问题:
「如何计算出玩家是否在AI敌人的视野范围内?」
这里我们把问题简化成2D,并加上实际数字来方便解说,如下图:
https://i.imgur.com/527amgi.png
a是AI,A是AI面对的方向向量,b是玩家。
1. 由AI至玩家的向量 ab = [5,1]
2. 与AI方向向量内积: A.ab = 1x5 + 4x1 = 9
3. 内积公式 A.B = |A||B|cosθ,θ是向量的夹角,假设AI视野180度,那麽夹角θ
就需要小於90度,而我们又知道cosθ在90度以内为正,所以只要判断向量内积是正
数负数,就能知道玩家是否在敌人视野内了。
4. 例如如果玩家站在b2位置,计算内积值为-3负数,就代表玩家不在AI视野内。
这样便能猜测「奇袭」是如何判定了,把2D变3D,前面变後方,国中数学,简单吧。
其实这篇也不是在教如何辨别魔物後方,毕竟我们不是开发者,无法知道魔物原点位置,
而且用原点来计算其实也只是我的理论而已,一个「游戏理论」啦!
--
※ 发信站: 批踢踢实业坊(ptt.cc), 来自: 76.102.178.80 (美国)
※ 文章网址: https://webptt.com/cn.aspx?n=bbs/MH/M.1660367268.A.DDA.html
1F:推 zxc9764315: 很合理XD,我以前有类似的规格也是这样做的 08/13 13:12
2F:推 pimachu: 恩恩 跟我昨天晚上想的差不多 08/13 13:14
3F:推 tong971063: 这个会不会太专业 08/13 13:35
4F:推 Milandess: 嗯嗯 跟我等一下想的差不多 08/13 13:35
5F:推 bt022: 嗯嗯 我刚好也想po文 08/13 13:38
6F:推 togg: 嗯嗯 跟我等等上线时发现的差不多 08/13 13:45
7F:推 asdf6630: 嗯嗯,这个我知道,PV=NTR 08/13 13:50
8F:推 hank81177: 我也是这样想的 08/13 14:04
9F:推 yu7777: 我也这麽觉得 08/13 14:07
10F:推 murmur38: 嗯嗯 昨晚想到失眠果然跟我看法雷同 08/13 14:09
11F:推 Fritter: 依照阿飞的生活智慧,这时候就要回答「我的答案,跟元po 08/13 14:11
12F:→ Fritter: 一样,理由也相同」 08/13 14:11
13F:推 understar: 帮你订正一下 向量是高中数学XD 08/13 14:12
14F:→ leechiungyi: 我原本要打ㄉㄜ,既然你都先打了,我就让贤吧 08/13 14:17
15F:推 xbox1: 嗯嗯跟我想的虽然不太一样但是我被说服了 08/13 14:25
16F:推 z030060374: 嗯 跟我想的一样 08/13 14:29
17F:推 silence5566: 总之先推不然别人说我看不懂 08/13 14:53
18F:推 kassdy: 嗯嗯 我刚刚在苹果树下也有想到 08/13 14:54
20F:推 LLuthor: 忘了cos 在270-360之间是正的… 08/13 15:00
如果0-90顺时针,那270-360正好就是逆时针的0-90,就像这样
https://i.imgur.com/4JEEpW9.png
所以只要判断正负值就好,是不是很方便!
21F:推 watchr: 单纯想问一下那泥翁这种把身体弯成U字形的,视乎原点也有 08/13 15:02
22F:→ watchr: 可能打尾巴触发不了奇袭 08/13 15:02
理论相当简单,不管魔物多长多猛,也不管猎人武器多长多勇,纯粹的一点一面的计算
重点还是在猎人原点与魔物原点的相对位置,而不是打到的部位
23F:推 s04416: 嗯嗯 跟我刚刚上厕所想到的一样 08/13 15:02
24F:推 t19960804: 恩恩 跟我想的差不多 08/13 15:06
25F:推 payyee: 我文组啦 我昨天大便的时候也这样想 08/13 15:06
26F:→ wdg1e56: 这论文肯定没抄袭 08/13 15:11
27F:推 linwukin: 我看到狗塞 还以为我在做恶梦 08/13 15:26
※ 编辑: FSAC00840116 (76.102.178.80 美国), 08/13/2022 16:03:24
28F:推 redmib: 这里只有我看不懂吗 08/13 15:57
29F:推 guets: 泥翁U字形算动作吧 怪物模组应该是以建模尚未加入动作前 08/13 16:03
※ 编辑: FSAC00840116 (76.102.178.80 美国), 08/13/2022 16:18:48
30F:→ opmikoto: 玩个游戏 怎麽开始算微积分了 08/13 16:17
33F:推 Gangtai: 以後人家问学数学可以干嘛就回这个 08/13 16:29
34F:→ ash9911911: 咦贴错图 08/13 16:30
36F:推 Rocksmith: 恩恩跟我想的一样 08/13 17:20
37F:推 ice76824: 恩恩跟我想的一样 08/13 17:23
38F:推 none049: 我开始觉得在月迅出来之前可以先出一只绿迅,牠的装备或 08/13 17:48
39F:→ none049: 是用牠素材做的珠子可以出一个技能,效果是"切书时遭到攻 08/13 17:48
40F:→ none049: 击可以直接让玩家出现在视角锁定的魔物背後",技能名称就 08/13 17:48
41F:→ none049: 叫替身术之类的,这样大家就不用问魔物背後到底在哪里了 08/13 17:48
42F:推 PPPGGG: = =我是在玩游戏...是吧? 08/13 17:48
43F:推 kaitokid1214: 这里是MH版 不是数学俱乐部 08/13 18:16
44F:推 bluefancy: 对 你说的都对 08/13 18:40
45F:推 bluefancy: 如果彻甲射完後,跑到怪物身後呢? 08/13 18:46
46F:→ wdg1e56: 除非你会时停,不然应该来不及到背後 08/13 18:49
47F:推 zseineo: 看伤害出现的当下 人物的位置,但彻甲斩裂都不吃奇袭 08/13 18:55
48F:推 WU3CO00J: 嗯嗯,所以月迅是数学家? 08/13 19:05
49F:推 longya: 彻甲不就有一篇验证说不吃奇袭了 还跑到身後干嘛 08/13 19:35
50F:推 CAtJason: 魔物的我还是不太清楚 08/13 20:02
51F:→ CAtJason: 但东西姐妹的我略懂略懂 08/13 20:02
52F:推 child1991: 这个不用论文原创比对系统了 这肯定是原创XD 08/13 20:03
53F:推 daniel840610: 对,所以对着魔物的屁股疯狂输出就对了(??? 08/13 21:27
54F:推 jimmy1112111: 第一眼看到「y轴线後」觉得奇怪,怎麽不是x轴线後 08/13 21:59
55F:→ jimmy1112111: (也就是负方向),後来看前一句「yz平面後」这才晓 08/13 21:59
56F:→ jimmy1112111: 得,y轴线後的後不是我想的後 08/13 21:59
57F:推 a100820: 道理我都懂,但为什麽鸽子这麽大 08/14 00:54
58F:推 Gestapo1121: 零解在魔物尾巴上会触发这个吗 08/14 01:52
59F:推 siaying921: 不好意思,我书读得少,能不能直接懒人包。 08/14 18:31
60F:→ zseineo: 懒人包就同标题上一篇 08/14 18:35
61F:推 Hua0722: 嗯嗯跟我想得一样 08/15 00:13
62F:推 yuzu0801: 如原po在推文提到的问题 站在魔物背後 cos可能会有大 08/15 10:04
63F:→ yuzu0801: 於0度状况 所以用内积小於0判断会有问题(但我们也不会 08/15 10:04
64F:→ yuzu0801: 吃饱太闲订座标系去算XD 08/15 10:04
我认为没有问题,我想不出任何站在魔物身後(原点後)cos会是正数的情况,你可以举例?
65F:推 yuzu0801: 因此我觉得最容易 也较不会有争议的方法是 玩家只要站在 08/15 10:06
66F:→ yuzu0801: -x方向上 即为站在魔物的背後 08/15 10:06
你其实没有改变任何观点,我的计算一直都是在判断玩家是否在YZ平面後(就是你说的-x方向)
而计算方法就是文中提到的。如果你觉得可以直接看玩家座标是否在-x上,那麽你就是把
模型空间(model space)和世界空间(world space)混为一谈,拿文中2D那张图举例,如果
不像我这样算,是要如何知道玩家是在前面还後面?
67F:推 yuzu0801: 只是有一点很重要 AI的哪个地方才是YZ平面(就我看到的 08/15 10:09
68F:→ yuzu0801: 结论 应该就是在後脚的位置 08/15 10:09
69F:→ kawazakiz2: 我以为我进错板 08/15 10:30
70F:推 jujudickoo: 请问这大神算什麽系? 08/16 16:06
※ 编辑: FSAC00840116 (199.168.62.6 美国), 08/17/2022 06:06:06
※ 编辑: FSAC00840116 (199.168.62.6 美国), 08/17/2022 06:06:41