XNA中如何更新模型資訊

2021-04-20 08:28:37 字數 2778 閱讀 3986

一、

更新更新是整個

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...