2013-03-16 184 views
1

我正在嘗試製作一個簡單的遊戲,允許您在屏幕上跳轉並進入平臺而不會離開屏幕或通過平臺墜落。OpenGL翻譯 - 座標

到目前爲止,我已經設法創建了一個小2D平方,我稱之爲我的精靈或角色以及2個平臺。

我終於做了我的精靈向上,下,左,右(沒有跳還),但我的離開屏幕不工作我怎麼想它會碰撞......

我是什麼正在使用glTranslate(x,y,z)來移動我的精靈,這取決於從鍵盤輸入的key並測試精靈和屏幕之間的碰撞。不幸的是,我想我會在我的collisionScreen內部與翻譯中使用的座標混淆。

需要注意的是,無論精靈在何處或何時被繪製,我都無法將我的精靈帶過最初繪製精靈的位置ie "0"

+0

「mySKeyboard()」是否被調用? – rhughes 2013-03-16 15:11:01

+0

是的,這是因爲精靈在屏幕上移動。它可以永遠向上或向上,並且向左和向下,直到它在原點處的X或Y上達到0( – Reanimation 2013-03-16 15:14:50

+0

)當碰撞物體到達任一邊時,碰撞邏輯將位置設置爲零(有些奇怪的是通過從自身中減去它)。 – JasonD 2013-03-16 15:21:05

回答

1

看來:

void collisionScreen (int x, int y) 
{ 
    //stops sprite leaving current screen size 
    if(x_pos < 0 || x_pos+s1_W > winX) 
     x_pos -= x_pos; 
    if(y_pos < 0 || y_pos+s1_H > winY) 
     y_pos -= y_pos; 
} 

實際上並未使用你進入它的xy參數。

也許你的意思是這樣的:

void collisionScreen (int x, int y) 
{ 
    //stops sprite leaving current screen size 
    if(x_pos < 0) 
     x_pos = 0; 
    else if(x_pos+s1_W > winX) 
     x_pos = winX - s1_W; 

    if(y_pos < 0) 
     y_pos = 0; 
    else if(y_pos+s1_H > winY) 
     y_pos = winY - s1_H; 
} 

而且,你的精靈不會通過0因爲這是這種方法的目的是做。