首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Ogre3d场景码阵列

Ogre3d场景码阵列
EN

Stack Overflow用户
提问于 2017-04-06 15:11:19
回答 1查看 144关注 0票数 1

目前,我正在ogre3d的一个pcg城市工作,基本上接近一个房间标记为一个城市将在那里孕育一个城市。然而,我有点不知所措,不知道如何将建筑物“存储”成一个数组,并检查它们的位置以处理碰撞。在这个方法中,我得到了建筑物需要生成的飞机的大小,然后我创建了一个_cityNode,它将容纳所有的建筑节点。这些被设置在for-循环中。在buildings变量中,我尝试在数组中获取buildingNode,以便在另一种方法中检查碰撞。我基本上有两个问题:

  1. 如何将buildingNode放入数组中?
  2. 这种“buildingNodes唯一性”的方法是正确的,还是需要另一种方法? void::generateCity( int sizeX,int sizeZ,int _numberOfBuildings) { #if OGRE_PLATFORM == OGRE_PLATFORM_WIN32 FILE* fp;freopen_s(&fp,"CONOUT$","w",stdout);_rootNode === _cityNode = _rootNode->createChildSceneNode("cityNode");printf(“建筑物数:%d \n",_numberOfBuildings);printf(”X的位置:Z的%d位置:%d \“,sizeX,sizeZ);for (int i= 0;i< _numberOfBuildings;i++) { Ogre::SceneNode* buildingNode = GameManager::getSingletonPtr()->getSceneManager()->createEntity("cube.mesh");buildingNode->createChildSceneNode()->attachObject(_buildingEntity);buildingNode->setPosition(rand() % sizeX,50,rand() % sizeZ);buildingNode->setScale(rand() % 6+1,rand() %6+ 1,rand() %6+ 1);Ogre::Vector3 buildingpos = buildingNode->getPosition();Ogre::Vector3 buildingscale = buildingNode->getScale();//_ building =新Ogre::SceneNodebuildingNode;checkCollision();checkEntryWay();printf(“建筑物节点的位置%f,%f,%f”,building.x,buildingpos.y,buildingding.z);printf(“构建节点的比例%f,%f,%f \n",buildingscale.x,buildingscale.y,buildingscale.z);} fclose(fp);#endif }
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2017-04-07 12:45:28

您可以使用任何STL容器,Ogre::SceneNode*与它们完全兼容。

例如,您可以在std::vector中收集节点,如下所示

代码语言:javascript
复制
std::vector<Ogre::SceneNode*> buildings_;
for (int i = 0; i < _numberOfBuildings; i++)
{
  /* ... */
  buildings_.push_back(buildingNode);
}

然后访问它们就像

代码语言:javascript
复制
for (auto i : buildings_) {
  Ogre::Vector3 buildingpos = i->getPosition();
  Ogre::Vector3 buildingscale = i->getScale();
}
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/43259085

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档