iT邦幫忙

2021 iThome 鐵人賽

DAY 29
0
自我挑戰組

翻車機率極高的2D平台遊戲(2D Platformer)製作系列 第 29

[Day29] 再訪碰撞偵測與解析(二) - AABB碰撞偵測

今日目標

  • 實現AABB碰撞偵測
  • 視覺上的debug效果

Entity與其相關功能

我把昨天的Entity結構獨立出來,然後新增了這三個function方便之後使用,目前只開這些,之後有需要再加。

typedef struct Entity {
    V2f pos;
    V2f sz;
    V2f dir;
    Rect rec;
    V2f center_pos;
} Entity;
// 建立
void EntityCreate(Entity* e, V2f pos, V2f sz);

// 更新移動
void EntityMoveOffset(Entity* e, float xoffset, float yoffset);

// 偵測碰撞
bool EntityIsCollided(Entity* e1, Entity* e2);

然後有把一些結構中的變數刪除,因為事實上這些變數,可以說是多的,老實說,在寫的時候還是感覺可以精簡化,但之後再處理了,我想先把碰撞偵測與解析做出來。

可以把Enitiy的功能,對應成其他引擎中的Transform元件,但我的目前可以做到的事更少,因為我基本上是需要甚麼功能,先暴力的寫出來,之後看有沒有重複或是額外的需要,再重構出來成獨立的功能。

視覺化Debug

最近在做的事,事實上都是把之前再做一遍,比期之前現在開始做了一些視覺上的功能方便我們Debug,老實說,或者是對我來說,這樣才比較對,明明都是以視覺為核心去製作,但卻不用視覺上的工具幫忙我們開發...

然後這是新的碰撞效果,跟昨天差沒多少,因為大部分的時間都在處理AABB,之前Day14寫的AABB好像有錯誤,於是跑回去翻Learn OpenGL才解決了問題。

參考

最後!把今天的成果上傳到github


上一篇
[Day28] 再訪碰撞偵測與解析 (一) - 需要的資料
下一篇
[Day 30] 再訪碰撞偵測與解析(二) - 初步碰撞解析
系列文
翻車機率極高的2D平台遊戲(2D Platformer)製作33

尚未有邦友留言

立即登入留言