2
我正在研究移植到Android上的3D遊戲,並且我想在3D遊戲中使用觸摸事件。我需要3D空間中的點,就在剪裁平面附近,但我可以從Android顯示器獲得2D座標。那麼,有沒有辦法將這些(x,y)座標映射到3D空間中的(x,y,z)座標?如何將2D顯示座標映射到3D OpenGL空間
編輯
好吧,我工作的一個賽車遊戲,我想插入一個過程中的一些項目,不同的地方我點擊。我有這樣的功能:
void racing_mouse_cb(int button, int state, int x, int y) { //parameters (x,y) are coords of a display
set_ill_fish(get_player_data(local_player())->view);
}
但現在我每隔一段距離插入物品在玩家面前:
void set_ill_fish(view_t view) {
item_locs[num_items].ray.pt.x = view.plyr_pos.x;
item_locs[num_items].ray.pt.z = view.plyr_pos.z - 5;
item_locs[num_items].ray.pt.y = find_y_coord(view.plyr_pos.x,
view.plyr_pos.z - 5) + 0.2;
item_locs[num_items].ray.vec = make_vector(0, 1, 0);
.
.
.
}
,但如何把這種顯示面,我無言以對。
你嘗試過什麼?發佈代碼,然後我們可以看看我們可以幫助你。 – hetepeperfan
向x-y-touch上的Z-pane發送一縷光線,看看你點擊了哪個物體。 –
要將一個點從2D屏幕轉換爲3D世界,您可以使用'gluUnproject',參見[http://nehe.gamedev.net/article/using_gluunproject/16013/](http://nehe.gamedev.net/article/using_gluunproject/16013 /) – jcxz