iT邦幫忙

第 12 屆 iThome 鐵人賽

DAY 29
0
自我挑戰組

寫遊戲初體驗系列 第 29

Day 29

  • 分享至 

  • xImage
  •  

Vortex

現在我們有火焰了,但是呢如果今天我的火焰想要有點這種效果呢。

感覺有個颱風在那裏影響火焰的走向。

所以我們就來模擬颱風。

颱風會有旋轉的速度,而他這個速度會影響到 Particle 的行徑方向。

而颱風能夠影響 Particle 的有 posspeed跟颱風的size

struct vortex{ 

    glm::vec2 pos = {0.f, 0.f};
    float speed = 0.f;
    float scale = 0.f;
}

然後更改一下我們的 Particle 的更新方法。

float dx = particle.pos.x - vortex.pos.x;
float dy = particle.pos.y - vortex.pos.y;
float vx = -dy * vortex.turbulence.x;
float vy = dx * vortex.turbulence.y;
factor_ = 1.0f/ (1.0f + (dx*dx + dy*dy)/vortex.currentSize*0.1);

particle.pos.x += (vx - particle.currentVel.x) * factor_ + particle.currentVel.x * dt;
particle.pos.y += (vy - particle.currentVel.y) * factor_ + particle.currentVel.y * dt;

不過剛剛這個是靜態的颱風,如果希望颱風也能隨時間移動的話其實也不難。因為只要把颱風當作另一個 Particle,跟著一起排放就好了。

動態颱風我們會需要更改我一些code

factor_ = 1.0f/ (1.0f + (dx*dx + dy*dy)/(vortex.currentSize*0.1));
float lifeFactor = vortex.life/emitter.vortexMaxParticleLife;
factor_ *= (1-lifeFactor)*lifeFactor*4;

我們的颱風也會隨時間移動,而也會隨時間消失,我們希望在颱風快死亡時對 Particle 的影響減小。

左邊那個就是有 動態 vortex 影響喔


上一篇
Day 28 Particle System 4
下一篇
Day 30 總結
系列文
寫遊戲初體驗30
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言