gpt4 book ai didi

iPhone : OpenGL ES : Detecting if you have tapped a object (cube) on screen

转载 作者:行者123 更新时间:2023-12-03 19:10:55 28 4
gpt4 key购买 nike

我已经问了一个类似的问题,这让我达到了现在的水平,但我真的需要一些帮助。这是我完成一些很酷的事情的最后一件事(在我看来哈哈)

我有一个 3D 世界,我可以在其中移动,这个世界里有简单的立方体。

使用函数 -(CGPoint)getScreenCoorOfPoint:(IMPoint3D)_point3D 我可以计算出这些立方体在 3D 世界中的 X、Y 位置。但它不是基于我所在的位置,而是基于他们在 3d 区域中的位置。使用相同的功能,我还可以计算出我所在的位置。我还可以找出有人点击了屏幕的位置。

我到底如何将它们映射在一起,以便我可以确定我是否单击了其中一个?

我当然需要一些东西来确定我面对的方向。人们建议将它们渲染出屏幕并做一些事情,但这完全超出了我的想象。我考虑放弃该功能并基于 3d 坐标构建自己的功能(以某种方式)

代码

for (NSDictionary *item in self.players)
{
int x;
int z;

x = [[item objectForKey:@"posX"] floatValue];
z = [[item objectForKey:@"posZ"] floatValue];

IMPoint3D playerPos;
playerPos.x = x;
playerPos.z = z;
playerPos.y = 1;

CGPoint screenPositionOfThisCube ;
screenPositionOfThisCube = [self getScreenCoorOfPoint:playerPos];


#define TUNE 28
CGRect fingerSquish = CGRectMake(
screenPositionOfThisCube.x - TUNE,
screenPositionOfThisCube.y - TUNE,
TUNE * 2,
TUNE * 2);

// now check that the POINT OF THE TOUCH
// is inside the rect fingerSquish

if ( CGRectContainsPoint( fingerSquish, pos ) )
{
NSLog(@"WOOP");
// YOU HAVE FOUND THE TOUCHED CUBEY.
// YOU ARE DONE. this item is the cube being touched.
// make the cube change color or something to test it.
}
}

我也尝试了 gluUnproject 但没有成功(请参阅我的其他帖子)

alt text

最佳答案

您正在讨论的概念(通过 2D 坐标在 3D 屏幕上选择对象)称为拾取

请参阅我的旧帖子以获取一些解决方案:

How would you solve this opengl necessity (in c) involving knowing in which square in a boardgame did the user click?

OpenGL GL_SELECT or manual collision detection?

关于iPhone : OpenGL ES : Detecting if you have tapped a object (cube) on screen,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4365856/

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