ORGE乱记一

 今天,基本上好像看得进展不大.唉,NovodeX phisic engine搞了半天,也没什么进展,更不用说把整进OGRE,两边都没什么了解,只好过春天燕尘那边更新了再说,这边就先不摸索了,浪费时间...然后CrazyEddie'sGUISystem (CEGUI)这边也一直编译通不过,应该是路径设置出问题了,以前都没关心过.NET中的输出目录呀,工作目录什么的,一直都默认了,现在发现好多地方改了就出问题了,这个还好用用就熟悉喽. 所以,这二块现在实在难道太大了,先不看了,跟人家走就行.还是先看OGRE中的渲染的一些调用先.
  嗯,看看这些,确实能明白不少,然消息侦听,用场景树,以前写什么小游戏时根本没想过还有这种东东,这样确实让各部分独立了很多,CODE时爽多了... 然后昨天晚上看<C++沉思录>中,那个讲句柄例子也,也是受益颇多.以前学C++,学OO,以为说学完封装,学会继承,学完多态就会了,实际上根本没入门,为什么要这样用,好处在哪只在书在见过那么了了的几句话,根本没真明白.看了里面的例子才知,原来C++还可以这样写呢... 嗯,反正一只菜鸟,赶紧学就是喽,其实那个例子还没完全明白呢,明白了再写心得吧. 
  把今天OGRE看的一些东东贴下,也算一个小交待,呀,没几天就要回家喽...其实很想回家的,XIXI,回家,就可以找同学,找小白玩喽:)

OGRE 的场景组织方式,就像一棵树,树有根、有枝干、有叶子和果实。最基本的两个概念,是场景节点 (SceneNode) 和实体 (Entity) 。场景节点就像树枝,实体就像枝头的果实。我们可以画个概念图:

场景节点就像根、树干和树枝,它可以再分枝,或者挂上果实(实体);
实体就像果实,它总是被绑定 (Attach) 在一个场景节点上并且总是处于分枝的末端;

场景节点控制实体的位置、方向、缩放等空间属性;
实体具有自己所使用的模型、材质、阴影、骨骼、动画、渲染状态等各种个体属性;

整个场景节点拥有唯一的一个根场景节点(RootSceneNode),如果一个实体不是根场景节点的“后代”,也就是所谓的“游离”实体或被绑定在一个"游离"节点上的实体,它不会被显示。

创建实体用:
Entity* entObject = mSceneMgr->createEntity( "object", "ninja.mesh" );
Entity* entGround = mSceneMgr->createEntity( "ground", "GroundPlane" );
获取场景根节点:
SceneNode* rootNode = mSceneMgr->getRootSceneNode();
创建子节点:
SceneNode* groundNode = rootNode->createChildSceneNode();
将实体绑定在子节点:
groundNode->attachObject( entGround );
设定子节点的坐标:
objectNode->setPosition( Vector3( 0, -100, 0 ) );
取得要控制实体的节点:
SceneNode* mSceneNode; // 场景节点
mSceneNode = mSceneMgr->getSceneNode( "objectNode" ); // 获取角色对象的场景节点
控制角色移动:
if (mInputDevice->isKeyDown( KC_I ) && timeDelay <= 0)// I键的按下
{
mSceneNode->translate( Vector3( 0, 0, -walkSpeed ) );// 控制角色位移
mSceneNode->rotate(Vector3(0,1,0),Radian(0.05));// 控制角色放转
timeDelay = 0.02;
}




 

你可能感兴趣的:(游戏,C++,c,C#,OO)