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 © 林公子
四虎久久影院
|
久久久久亚洲AV成人片
|
久久国产一片免费观看
|
亚洲一区二区三区日本久久九
|
国内精品久久久久久久久电影网
|
香蕉99久久国产综合精品宅男自
|
久久99精品久久久久久动态图
|
久久久人妻精品无码一区
|
久久国产成人精品国产成人亚洲
|
亚洲中文字幕无码一久久区
|
久久久久亚洲AV无码麻豆
|
久久九九免费高清视频
|
亚洲欧美日韩中文久久
|
久久久精品国产Sm最大网站
|
久久这里只有精品18
|
合区精品久久久中文字幕一区
|
伊人热人久久中文字幕
|
久久久久av无码免费网
|
久久精品亚洲精品国产欧美
|
97久久精品人妻人人搡人人玩
|
人人狠狠综合88综合久久
|
国产一级做a爰片久久毛片
|
久久久久人妻一区精品性色av
|
yy6080久久
|
深夜久久AAAAA级毛片免费看
|
国产精品成人精品久久久
|
亚洲国产欧美国产综合久久
|
国产亚州精品女人久久久久久
|
国产成人精品久久一区二区三区av
|
精品永久久福利一区二区
|
亚洲国产美女精品久久久久∴
|
色欲综合久久中文字幕网
|
亚洲精品无码久久久久久
|
天天躁日日躁狠狠久久
|
久久亚洲AV无码精品色午夜
|
久久久久国产精品麻豆AR影院
|
国产午夜精品久久久久九九电影
|
国产成人精品久久一区二区三区av
|
青青草国产精品久久久久
|
.精品久久久麻豆国产精品
|
国产精品久久久亚洲
|