C++優雅之旅
探索C++
C++博客
::
首頁
::
新隨筆
::
聯系
::
聚合
::
管理
::
15 隨筆 :: 0 文章 :: 20 評論 :: 0 Trackbacks
<
2008年12月
>
日
一
二
三
四
五
六
30
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
1
2
3
4
5
6
7
8
9
10
常用鏈接
我的隨筆
我的評論
我參與的隨筆
留言簿
(4)
給我留言
查看公開留言
查看私人留言
隨筆分類
C++/CLI(2)
(rss)
DirectX(4)
(rss)
HGE(2)
(rss)
IDE相關(1)
(rss)
Irrlicht
(rss)
Lua(3)
(rss)
OGRE(2)
(rss)
OpenGL
(rss)
Qt(1)
(rss)
Win32
(rss)
計算機圖形學
(rss)
數據結構與算法
(rss)
隨筆檔案
2010年5月 (1)
2009年5月 (4)
2009年4月 (1)
2008年12月 (1)
2008年11月 (2)
2008年7月 (1)
2008年4月 (5)
相冊
Images
版權聲明
林公子
所有原創文章遵循
《創作共用版權協議》
,要求
署名、非商業、保持一致
。在滿足
《創作共用版權協議”》
的基礎上可以轉載,但請以超鏈接形式注明出處。
搜索
積分與排名
積分 - 95243
排名 - 257
最新評論
1.?re: VS2008下編譯luabind 0.8.1
您好,我想問一下,可以編譯成靜態的的么,就是想將多個不同的庫編譯到一個庫當中,這樣引用的時候,只引用一個就可以了
--godboy
2.?re: Luabind導出類到lua
Init(L) ->> bindClass(L)
--滔海縱舟
3.?re: Luabind導出類到lua
構造函數里應該加上一行
TestClass::mSingleton = this;
--滔海縱舟
4.?re: VS2008下編譯luabind 0.8.1
雖然帖子的時間有點長了,但還是很有效的
--afreet2006
5.?re: VS2008下編譯luabind 0.8.1
非常感謝,我用你說的這個步驟成功編譯luabind 0.9.1
--afreet2006
閱讀排行榜
1.?[轉]string, char*, int類型轉換(49375)
2.?在Qt中使用DirectX(12676)
3.?D3D中D3DFVF_XYZ和D3DFVF_XYZRHW的區別(4683)
4.?C++中取得各種簡單數值類型的最大最小值(4076)
5.?VS2008下編譯luabind 0.8.1(4044)
評論排行榜
1.?Luabind導出類到lua(6)
2.?VS2008下編譯luabind 0.8.1(5)
3.?[轉]string, char*, int類型轉換(5)
4.?VC++2005中項目屬性中"生成后事件"用法(4)
5.?在Qt中使用DirectX(0)
SceneNode::setDirection函數問題
mSn
->
translate(mPosition
*
evt.timeSinceLastFrame, Node::TS_WORLD);
剛開始學習Ogre,做了個很簡單的demo,用鍵盤的上下左右控制一個人物模型四處走動。邏輯很簡單,但是實現到想要的效果卻費了一番周折。
一開始用一個Vector3 mPosition變量保存人物的位置,然后Real mWalkSpeed保存人物的移動速度,在上下左右的按鍵響應代碼中分別
寫上處理人物各方向移動的代碼:
1
bool
DemoFrameListener::keyPressed(
const
OIS::KeyEvent
&
arg)
2
{
3
switch
(arg.key)
4
{
5
//
按下Escape鍵,退出程序。
6
case
OIS::KC_ESCAPE:
7
mContinue
=
false
;
8
9
//
W、S、A、D控制人物行走。
10
case
OIS::KC_UP:
11
case
OIS::KC_W:
12
mPosition.z
-=
mWalkSpeed;
13
mSn
->
setDirection(Vector3::NEGATIVE_UNIT_Z);
14
//
取得模型的"Walk"動畫集。
15
mAnimationState
=
mEntity
->
getAnimationState(
"
Walk
"
);
16
break
;
17
case
OIS::KC_S:
18
case
OIS::KC_DOWN:
19
mPosition.z
+=
mWalkSpeed;
20
mSn
->
setDirection(Vector3::UNIT_Z);
21
//
取得模型的"Walk"動畫集。
22
mAnimationState
=
mEntity
->
getAnimationState(
"
Walk
"
);
23
break
;
24
case
OIS::KC_A:
25
case
OIS::KC_LEFT:
26
//
取得模型的"Walk"動畫集。
27
mAnimationState
=
mEntity
->
getAnimationState(
"
Walk
"
);
28
mSn
->
setDirection(Vector3::UNIT_X);
29
break
;
30
case
OIS::KC_D:
31
case
OIS::KC_RIGHT:
32
//
取得模型的"Walk"動畫集。
33
mAnimationState
=
mEntity
->
getAnimationState(
"
Walk
"
);
34
mSn
->
setDirection(Vector3::NEGATIVE_UNIT_X);
35
break
;
36
}
37
38
return
true
;
39
}
40
然后在每一幀中調用
mSn
->
translate(mPosition
*
evt.timeSinceLastFrame, Node::TS_LOCAL);
來更新人物位置。
編譯代碼運行,出現了奇怪的效果。初始時人物面朝-Z軸方向,按下后應該面朝+Z軸方向并朝這個方向行走,實際卻是面朝+Z方向往-Z軸方向移動。以為邏輯代碼寫錯導致移動方向錯誤,檢查了半天發現一點錯誤都沒有。折騰了兩天都沒有結果,今天在群里和人聊天時談到SceneNode::setDirection這個函數,人家說調用SceneNode::setDirection這個函數后會改變模型的局部坐標系,頓時腦子高速運轉,隱約覺得離答案已經不遠了,自己琢磨的一下,終于解決了問題。
原來,用一個參數(方向向量)調用setDirection函數時,該函數有兩個默認值,我遇到的問題就和第二個參數有關,這個參數描述的是setDirection函數操作的參照空間,有Node::TS_LOCAL,Node::TS_PARENT和Node::TS_WORLD三個可選值,分別表示,局部空間,父節點空間和世界空間。在我的例子中,人物的朝向是以整個地圖為參照物的,所以,這個參數應該設置成TS_WORLD,如果取其默認值Node::TS_LOCAL,調用setDirection之后,人物的整個局部坐標系的方向都變了,這樣一來,當按下方向鍵時,人物會面向正確的方向,但是移動的參照方向卻和原來的相反,這就是為什么會有正確的朝向卻背向移動的奇怪現象了。
另外
mSn
->
translate(mPosition
*
evt.timeSinceLastFrame, Node::TS_LOCAL);
中的Node::TS_LOCAL也要改成Node::TS_WORLD,使人物相對于世界空間平移。
posted on 2008-12-30 01:27
林公子
閱讀(2655)
評論(0)
編輯
收藏
引用
所屬分類:
OGRE
只有注冊用戶
登錄
后才能發表評論。
【推薦】100%開源!大型工業跨平臺軟件C++源碼提供,建模,組態!
相關文章:
Ogre學習筆記(一)
SceneNode::setDirection函數問題
網站導航:
博客園
IT新聞
BlogJava
博問
Chat2DB
管理
Powered by:
C++博客
Copyright © 林公子
久久久久久久精品妇女99
|
中文字幕久久精品无码
|
国产一区二区精品久久岳
|
精品一区二区久久久久久久网站
|
久久午夜羞羞影院免费观看
|
精品国产乱码久久久久久郑州公司
|
中文字幕久久亚洲一区
|
亚洲av成人无码久久精品
|
久久婷婷久久一区二区三区
|
亚洲精品97久久中文字幕无码
|
无码超乳爆乳中文字幕久久
|
国产精品青草久久久久福利99
|
日韩久久无码免费毛片软件
|
久久久久久人妻无码
|
久久午夜福利电影
|
老色鬼久久亚洲AV综合
|
久久久久人妻一区精品
|
国内精品久久久久影院优
|
中文成人久久久久影院免费观看
|
日韩久久久久久中文人妻
|
国产精品一区二区久久精品无码
|
91久久香蕉国产熟女线看
|
久久久噜噜噜久久中文字幕色伊伊
|
久久精品国产亚洲AV高清热
|
欧洲国产伦久久久久久久
|
99久久人人爽亚洲精品美女
|
久久精品aⅴ无码中文字字幕不卡
|
色欲综合久久躁天天躁
|
国产精品欧美久久久久无广告
|
av国内精品久久久久影院
|
人妻无码中文久久久久专区
|
中文字幕亚洲综合久久菠萝蜜
|
国产成人精品久久亚洲高清不卡
|
国产∨亚洲V天堂无码久久久
|
无码久久精品国产亚洲Av影片
|
日批日出水久久亚洲精品tv
|
久久久久久国产精品免费免费
|
国产国产成人久久精品
|
精品欧美一区二区三区久久久
|
一本大道久久a久久精品综合
|
亚洲综合婷婷久久
|