2014-04-23 143 views
1

我開始使用這個解決方案,但後來我發現當角色與剩餘座標處於一個座標時,它無法正確映射。如何將屏幕座標轉換爲簡單2D遊戲的世界座標?

首先我從相機中看到可見光範圍。然後我得到鼠標位置並按塊大小進行劃分,問題是:我假設在屏幕開始處有一整塊,但實際上可能有1/4,2/4和3/4的塊一個塊,屏幕結尾也是如此。

如何以最有效的方式正確執行此轉換?

typedef struct { 
    float x, y; 
} Point; 

Point camera_screen_coord_to_game(Camera *camera, int x, int y) 
{ 
    Range range = camera_get_visible(camera, game_clock_ticks()); 
    int block_size = settings_get_block_size(); 
    Point game_coord; 

    game_coord.x = range.x0 + x/block_size; 
    game_coord.y = range.y1 - 1 - y/block_size; 

    return game_coord; 
} 
+0

我覺得很難提供幫助,因爲不清楚哪個變量正在使用哪個座標系。遊戲中的範圍是多少?遊戲座標是否使用1塊作爲單位?所以遊戲座標可以是分數的,例如1.5是塊1的中心? – Bgie

回答

1

難道是因爲x,y和block_size都是int嗎?在分割之前將它們投入浮動,並獲得小數部分。

+0

謝謝。我不敢相信我忽略了它。 – 2013Asker

相關問題