2013-03-16 90 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因为这是这种方法的目的是做。