一、
更新更新是整個
xna遊戲開發的重點,它代表了整個遊戲的執行邏輯,從技術上講可分為輸入裝置的獲取和模型的變換兩個方面。
1、獲取輸入裝置的輸入資訊
xna目前主要支援三種輸入裝置:
xbox 360
控制器、滑鼠、鍵盤。我們暫時主要用到滑鼠和鍵盤。(1
)、滑鼠狀態的獲取
xna滑鼠包含左鍵、右鍵、中鍵的資訊(
buttonstate
.pressed
、buttonstate
.released
),滑鼠的當前位置(x,
y)。獲取當前滑鼠狀態:
mousestate
state =
mouse
.getstate();
獲取滑鼠的當前位置:
state.x
、state.y
判斷左鍵是否被按下:
state.leftbutton ==
buttonstate
.pressed
判斷右鍵是否被按下:
state.rightbutton ==
buttonstate
.pressed
注:xna中沒有左右鍵的單擊事件和雙擊事件,但可以自己編寫滑鼠的單擊雙擊事件類。
(2)、鍵盤狀態獲取:
xna中鍵盤類主要提供了判斷那個鍵被按下的功能。
獲取當前鍵盤資訊:
keyboardstate
keyboardstate =
keyboard
.getstate();
判斷某鍵(a)是否被按下: if
(keyboardstate.iskeydown(
keys
.a))
2、2d的變換 2d
圖形的變換是通過顯示函式來實現的。
public
void
draw (
texture2d
texture,/*
資訊*/
vector2
position,/*
螢幕座標
*/
nullable
<
rectangle
> sourcerectangle,/*
顯示區域
*/
color
color,
/*顏色
*/
float
rotation,/*
旋轉變換
*/
vector2
origin,/*
的原點座標
*/
vector2
scale,/*
縮放變換
*/
spriteeffects
effects,/*
特效*/
float
layerdepth
/*深度
*/
)spritebatch.draw(mytexture, spriteposition,
null
, color
.white,
0.5f
, new
vector2
(),
1.0f
, spriteeffects
.none,
0.0f);3
、3d模型變換
xna中3d模型的變換涉及到平移、旋轉、縮放等。它的實現是通過設定3d模型的每個
modelmesh
中的basiceffect
的world來實現的,我們通過獲取滑鼠、鍵盤等的狀態資訊並根據該資訊來計算3d模型的world變換矩陣,並通過設定該矩陣來改變模型的位置、旋轉、縮放等。通過平移變換我們可以實現3d模型的移動。如賽車的實現中,我們通過實時變換賽車的位置來驅動汽車的行使;我們通過設定汽車輪子的旋轉變換來實現汽車輪子的轉動效果以及儀錶盤的轉動;我們通過縮放來實現賽車與周圍景物的協調一致。(在實現賽車的程式中,攝像機跟隨汽車移動) /*
求取模型的wrold矩陣*/
matrix
.createtranslation(
refposition,
outmattranslation);/*
平移矩陣*/
matrix
.createscale(
refscale,
outmatscale);/*
縮放矩陣*/
matrix
.createfromyawpitchroll(rotation.y, rotation.x, rotation.z,
outmatrotation);/*
旋轉矩陣*/
world = matscale * matrotation * mattranslation;
/*world
矩陣*/
/*設定模型的world矩陣*/
foreach
(modelmesh
mesh
inmodel.meshes)
mesh.draw();
}
ACI 模型(更新中)
fabric所包含的物理和邏輯元件都記錄在mim中 management information model mim可以使用樹狀的mit表示 management information tree 每個mit節點表示一組,或乙個可管理的物件 mo,managed object mo可以是物理交換機,...
如何在FME中更新KML
本文介紹下 kml更新的原理及如何在 fme中實現 kml的更新操作。首先介紹下 kml檔案是如何實現更新的。對已用指定 載入的 kml 資料進行新增 更改或刪除 change create 和delete 指定要對其資料進行修改的 kml 檔案或 kmz 檔案。始終包含在 networklinkc...
mysql檢視當前狀態資訊 持續更新中
mysql 檢視當前連線數 命令 show processlist 如果是root帳號,你能看到所有使用者的當前連線。如果是其它普通帳號,只能看到自己占用的連線。show processlist 只列出前100條,如果想全列出請使用show full processlist mysql show p...