在深色GDK中制作精灵面部光标

时间:2014-03-08 07:29:33

标签: c++

我一直致力于一个Dark GDK项目,在这个项目中,我将精灵面向光标或鼠标的位置。我选择了一些代码并将其实现到我的应用程序中,但似乎没有正在进行修正。这是一个预览http://gyazo.com/bf57df49071e3a684a7e03b8f0cf4527,正如您所看到的,精灵没有面向光标所在的正确位置,并且它没有正确移动。我相信这是因为Dark GDK不知道我的物体的中心在哪里。谁能帮助我理解我做错了什么?我改变了旋转的值并旋转了精灵,但这根本没有帮助。

 // Dark GDK - The Game Creators - www.thegamecreators.com

 // the wizard has created a very simple project that uses Dark GDK
 // it contains the basic code for a GDK application

 // whenever using Dark GDK you must ensure you include the header file
#include "DarkGDK.h"


// the main entry point for the application is this function
void DarkGDK ( void )
{
// turn on sync rate and set maximum rate to 60 fps
dbSyncOn   ( );
dbSyncRate ( 60 );
dbLoadImage("hero.png", 1);
dbSprite(1,100,100,1);
// our main loop

while ( LoopGDK ( ) )
{

    float dx = dbMouseX() - dbSpriteX(1);
    float dy = dbMouseY() - dbSpriteY(1);
    dbRotateSprite(1,dbAtanFull(dy,dx));


    if(dbEscapeKey() == 1)
    {
        break;
    }
    dbSync ( );
}



dbDeleteImage(1);
dbDeleteSprite(1);
// return back to windows
return;
}

1 个答案:

答案 0 :(得分:0)

1)精灵的旋转轴位于从左上角开始绘制的点。可以使用以下方法更改轴:

                      dbOffsetSprite( iD , xOff , yOff ); 

从图片中可以看出,首选的偏移点是球的中心。

2)面向光标的图像的侧面/边缘(顶部,左侧,右侧,底部)将是0度侧。在任何精灵轴上:........................................... 。                                          90 ................................................. ..............................................                                           .................................................. ....................... |                                      .................................................. .................................................. .................................................. ............ 180 - O - 0 ............................... .................................................. ............                                           .................................................. ....................... | .......................... .................................................. ......................                                           .................................................. ..................... 270 ............................ .................................................. ......... 使用上面的设置,0将始终面向光标。

3.。)要获得面向光标的相应角度,只需在函数内添加(+)该角度:

                     dbRotateSprite( 1 , dbAtanFull(dy,dx) + 90.0 );