UE蓝图:准心锁定敌人实现,通过UI锁定敌人
UI控件蓝图https://internal-api-drive-stream.feishu.cn/space/api/box/stream/download/all/P0ehbl2hgoSBqexBcOfcNENvnCf/?mount_node_token=CkeQdo6BkoV403xxdBMchoyxnZc&mount_point=docx_image
1、让UI动起来
(1)
https://internal-api-drive-stream.feishu.cn/space/api/box/stream/download/all/VL7CbGrv0o1qZexB6GwcF4fInxd/?mount_node_token=EvN8dg51hoXeiVxO5o4cHl7rnMd&mount_point=docx_image
创建事件AimMoveEvent,接受参数Dir,即UI的移动方向
(2)
https://internal-api-drive-stream.feishu.cn/space/api/box/stream/download/all/BDSVbf1b7oxTHkxRdXecUtGKnah/?mount_node_token=CRssddsa0oB7Hgx81bPcdptlne2&mount_point=docx_image
https://internal-api-drive-stream.feishu.cn/space/api/box/stream/download/all/JbkGbvJamoK37LxigvGcsSpknAc/?mount_node_token=SGYRdO8FUo9wgQxbhkZcLaLenfe&mount_point=docx_image
*5是控制ui的移动速度(阅者可自行调整,建议提升为参数),CorssHairPosition是相对于初始位置的当前位移,初值是0
https://internal-api-drive-stream.feishu.cn/space/api/box/stream/download/all/T8KgbFyfoo9DuWxaK7pcOUUTntf/?mount_node_token=TC7jdj2HsoQsM5xDvvickJSgnhh&mount_point=docx_image
这一块是基于当前视口大小进行限制准信的移动,防止移出屏幕,可根据个人需求设计
https://internal-api-drive-stream.feishu.cn/space/api/box/stream/download/all/KokSbTxHCofoN9xhhZRcKz1anCb/?mount_node_token=QPSsdoUOJordBYxWfYNcuR4InZb&mount_point=docx_image
把准心位移值crossHairPosition加上视口中心viewportcenter(加上视口中心的原因是因为作者把ui的初始位置设置在视口中心了,读者可以自行斟酌),再把值赋予aimPosition,即UI当前在视口的位置
需注意通过设置视口中位置去设置ui的屏幕坐标时,该坐标是指ui最左上角的坐标
同时一个热知识,ui的屏幕坐标是以屏幕左上角为原点,向右和向下为正
这样我们通过接入输入设备,并把输入设备的方向传入该事件,就可以让ui移动起来了
2、锁定敌人
https://internal-api-drive-stream.feishu.cn/space/api/box/stream/download/all/B8VIb4aC3omMmzx89lic18wOnrc/?mount_node_token=JBnidQCLFoMIVDx2zbPcKBYDnnb&mount_point=docx_image
创建事件aimEvent,主要是利用投影的原理,把敌人的坐标投影到屏幕坐标,通过计算,查看该坐标是否在准心瞄准内,从而实现通过UI锁定actor
(1)
https://internal-api-drive-stream.feishu.cn/space/api/box/stream/download/all/EmIgb7iiFo8AwoxqugacUZXynYf/?mount_node_token=WimxdY63HoVXVuxRBuec107mnzd&mount_point=docx_image
把敌人坐标转为屏幕坐标
(2)
https://internal-api-drive-stream.feishu.cn/space/api/box/stream/download/all/RVGqbznXko8ggqx8sDXc9OzPnFd/?mount_node_token=L3hndatcrokuDQxfU1Rcn4Pfn8e&mount_point=docx_image
通过aimPosition和下面那一堆方法(用于获取准心ui的尺寸大小)然后相加(相加的原因是因为上面说过,aimPosition指的是准心UI的左上角在屏幕上的位置),得到准心中心在屏幕上的坐标
(3)
https://internal-api-drive-stream.feishu.cn/space/api/box/stream/download/all/XCTPbVkiNo42oKx2ODDcrbMynBc/?mount_node_token=Aw0zd2SvKohW9fxQ1sJcVcHonbb&mount_point=docx_image
然后就是查看是否被框住了,这个方法仁者见仁智者见智,可以使用作者的方法(适用于准心是矩形的),也可以通过向量的叉乘去查看点是否在多边形内
页:
[1]