gpt4 book ai didi

c++ - 帮助解决这个问题

转载 作者:行者123 更新时间:2023-11-30 18:08:15 26 4
gpt4 key购买 nike

这是我的问题。我正在渲染大小相同的轴对齐立方体。我创建了一个在玩家周围渲染的算法,如下所示:

******
******
***p**
******
******

虽然这确实有效,但玩家看不到整个半径。我知道玩家在 Y 轴上的旋转角度,所以我希望基于此修改我的算法,以便它只会渲染玩家可以或多或少看到的内容。

SetPlayerPosition();
float yrotrad;
yrotrad = (Camera.roty / 180 * 3.141592654f);




PlayerPosition.x += 70 * float(sin(yrotrad));
PlayerPosition.y -= 20;
PlayerPosition.z += 70 * -(float(cos(yrotrad)));

collids.clear();
for(int i = 0; i < 135; ++i)
{
for(int j = 0; j < 50; ++j)
{
for(int k = 0; k < 135; ++k)
{
if(!CubeIsEmpty(PlayerPosition.x + i, PlayerPosition.y + j, PlayerPosition.z + k))
{
collids.push_back(GetCube(PlayerPosition.x + i, PlayerPosition.y + j, PlayerPosition.z + k));
}
}
}
}

基本上,我原来的算法只是从玩家位置中减去 70,并渲染大小为 70 的正方形。所以我尝试将它们乘以 Y 旋转的 sin 和 cos ,但它不起作用。我确信这是可能的,我只是觉得我错过了一些东西。我怎样才能实现只渲染玩家看到的内容的目标。

谢谢

请注意,我尝试了视锥体剔除,这太慢了,我宁愿这个无论我有多少个立方体都可以工作

而不是仅渲染上面的 id,例如,如果玩家面向 ->

...... ****
...... ****
......P****
...... ****

最佳答案

再次查看您的代码后,也许这就是您的问题:

PlayerPosition.x += 70.0f * float(sin(yrotrad));
PlayerPosition.y -= 20;
PlayerPosition.z += 70.0f * -(float(cos(yrotrad)));

坐标有哪些类型?

关于c++ - 帮助解决这个问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3663711/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com