请选择 进入手机版 | 继续访问电脑版
查看: 1926|回复: 8

[交流] 简单解决抛射物遮挡视野

[复制链接]

22

主题

317

回帖

174

积分

Lv.4 怪物猎人

UID
373726
小麦
3
金锭
608
下界之星
0

开发者认证勋章

发表于 2019-12-17 18:48:06 | 显示全部楼层 |阅读模式 IP:山西
本帖最后由 sevenstars 于 2020-3-15 10:30 编辑

在mc中,玩家有两个视角,在命令的目标选择器里称为rx,ry。rx是水平方向角度,ry是竖直方向角度,他们的值与mc坐标系的关系如图。

比如,将抬头垂直看向天空的玩家传送到0 64 0:/tp @a[ry=-90] 0 64 0
官方提供了GetDirFromRot()函数,因此我们不必自己写三角函数,直接用官方封装好的就行了
抛射物生成的坐标需要与玩家有一定距离,而且坐标始终在玩家看向的方向。由@艾克丶艾达 提供的最好方法如下,只需两行:





本帖子中包含更多资源

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

x

4

主题

1093

回帖

345

积分

Lv.2 石器学徒

UID
3409745
小麦
4
金锭
1241
下界之星
0
发表于 2019-12-20 16:32:23 | 显示全部楼层 IP:广东

4

主题

11

回帖

8

积分

Lv.1 新手木匠

UID
11716
小麦
0
金锭
93
下界之星
0
发表于 2020-3-11 17:22:31 来自手机 | 显示全部楼层 IP:浙江
现在貌似没有用?生成抛射物绑定了frame依然是从脸上出来的。我自己写的三角函数也没有用,我用了楼主的方法依然没用。

22

主题

317

回帖

174

积分

Lv.4 怪物猎人

UID
373726
小麦
3
金锭
608
下界之星
0

开发者认证勋章

 楼主| 发表于 2020-3-11 18:12:04 | 显示全部楼层 IP:山西
Einstein奕韬 发表于 2020-3-11 17:22
现在貌似没有用?生成抛射物绑定了frame依然是从脸上出来的。我自己写的三角函数也没有用,我用了楼主的方 ...

弹射物类型是雪球的时候,传入的pos无效

6

主题

14

回帖

12

积分

Lv.1 新手木匠

UID
744743
小麦
1
金锭
78
下界之星
0
发表于 2020-3-14 09:25:26 来自手机 | 显示全部楼层 IP:浙江
首先获得生物的朝向和坐标
rotation = self.CreateComponent( entityId, "Minecraft", "rot ).GetRot()
position = self.CreateComponent( entityId, "Minecraft", "pos" ).GetPos()

然后通过朝向获取生物朝向的方向向量
vector = serverApi.GetDirFromRot( rotation )

最后给定一个偏移距离,计算出新的发射起始点
alignLength = 1.0 # 偏移距离
x = position[0] + vector[0] * alignLength
y与z同理

最终使用计算好的 x y z 坐标生成抛射物即可

6

主题

14

回帖

12

积分

Lv.1 新手木匠

UID
744743
小麦
1
金锭
78
下界之星
0
发表于 2020-3-14 09:27:03 来自手机 | 显示全部楼层 IP:浙江
根本不需要三角函数,一个方向向量和一个距离常量就搞定了,初中物理几何基础

4

主题

11

回帖

8

积分

Lv.1 新手木匠

UID
11716
小麦
0
金锭
93
下界之星
0
发表于 2020-3-19 17:42:43 来自手机 | 显示全部楼层 IP:浙江
恩恩,我以前写算法的时候,没有获取朝向的向量的接口,我就用的三角函数。
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

返回顶部