C++優雅之旅
探索C++
C++博客
::
首頁
::
新隨筆
::
聯系
::
聚合
::
管理
::
15 隨筆 :: 0 文章 :: 20 評論 :: 0 Trackbacks
<
2008年7月
>
日
一
二
三
四
五
六
29
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
常用鏈接
我的隨筆
我的評論
我參與的隨筆
留言簿
(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
版權聲明
林公子
所有原創文章遵循
《創作共用版權協議》
,要求
署名、非商業、保持一致
。在滿足
《創作共用版權協議”》
的基礎上可以轉載,但請以超鏈接形式注明出處。
搜索
積分與排名
積分 - 95504
排名 - 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類型轉換(49397)
2.?在Qt中使用DirectX(12702)
3.?D3D中D3DFVF_XYZ和D3DFVF_XYZRHW的區別(4694)
4.?C++中取得各種簡單數值類型的最大最小值(4087)
5.?VS2008下編譯luabind 0.8.1(4067)
評論排行榜
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
林公子
閱讀(2671)
評論(0)
編輯
收藏
引用
所屬分類:
OGRE
只有注冊用戶
登錄
后才能發表評論。
【推薦】100%開源!大型工業跨平臺軟件C++源碼提供,建模,組態!
相關文章:
Ogre學習筆記(一)
SceneNode::setDirection函數問題
網站導航:
博客園
IT新聞
BlogJava
博問
Chat2DB
管理
Powered by:
C++博客
Copyright © 林公子
日韩亚洲欧美久久久www综合网
|
久久无码人妻精品一区二区三区
|
一本久久a久久精品亚洲
|
久久久精品2019免费观看
|
久久免费精品视频
|
一本色道久久88精品综合
|
狠狠色伊人久久精品综合网
|
精产国品久久一二三产区区别
|
国产婷婷成人久久Av免费高清
|
久久经典免费视频
|
大香网伊人久久综合网2020
|
色综合久久久久综合体桃花网
|
久久久久九国产精品
|
久久99中文字幕久久
|
亚洲国产精品无码久久一线
|
伊人久久成人成综合网222
|
精品久久久久久
|
久久精品国产99久久久
|
狠狠色丁香婷婷久久综合五月
|
亚洲国产成人久久一区久久
|
国产亚洲精品美女久久久
|
日产精品久久久久久久性色
|
亚洲国产天堂久久久久久
|
久久精品国产精品亚洲人人
|
久久国产高清字幕中文
|
成人免费网站久久久
|
久久午夜羞羞影院免费观看
|
综合久久国产九一剧情麻豆
|
久久综合视频网站
|
久久久久噜噜噜亚洲熟女综合
|
国产高潮国产高潮久久久
|
久久久免费精品re6
|
久久久久久夜精品精品免费啦
|
久久精品国产亚洲AV大全
|
国产精品久久久久AV福利动漫
|
精品伊人久久大线蕉色首页
|
亚洲国产一成人久久精品
|
香蕉久久一区二区不卡无毒影院
|
亚洲AV无码久久精品成人
|
久久精品国产亚洲精品2020
|
一本大道加勒比久久综合
|