遊戲物理
閱讀設定
例如一隻用牛頓力學(Newtonian mechanics)嘅賽車遊戲,喺玩家撳咗「踩油」嘅掣嗰陣,要改變架車嘅加速度數值,而架車相應嘅速度同位置等變數亦要跟牛頓力學裏面嘅法則作出相應嘅改變[1]。
力學模擬
[編輯]以下呢段用 C 程式語言寫嘅源碼可以攞嚟模擬喺牛頓第二定律(Newton's second law)之下郁動嘅物體[2]:
double t = 0.0;
float dt = 1.0f;
float velocity = 0.0f;
float position = 0.0f;
float force = 10.0f;
float mass = 1.0f;
// 設一大柞變數,包括咗時間點(t)、時間間隔(dt)、速度(velocity)、位置(position)、件物體受嘅力(force)、同件物體嘅質量(mass)。
while ( t <= 10.0 ) // 重複噉計若干次,計到時間點係 10 為止。
{
position = position + velocity * dt;
velocity = velocity + ( force / mass ) * dt; // 用牛頓第二定律計吓件物體受嘅力同佢嘅質量會點影響佢嘅速度。
t += dt;
}
碰撞探測
[編輯]内文:碰撞探測
碰撞探測(collision detection)係指用嚟喺每個時間點探測一個世界內部「有冇邊對物件相撞」嘅演算法[3]。碰撞探測「要點樣最佳化」係一條大問題:原則上,段演算法可以將所有物體可能配對遂對遂對攞嚟睇,但噉做運算複雜度會好高[註 1];比較有效率嘅做法可能係「將遊戲空間入面啲物件全部睇做長方體,排除邊對邊對物體冇可能係相撞緊」呀噉[4]。
- 命中框(hitbox):遊戲空間入面對應一個角色或者一件物件嘅空間,如果有一吓攻擊(子彈等)同一件物件嘅命中框碰撞,個遊戲程式就會當呢一吓攻擊打中咗嗰件物件。喺 PvP 嘅動作遊戲當中,美術設計上比較大隻嘅角色命中框會大啲,令佢哋比較容易俾敵人打中,但同時佢哋嘅血量又會多啲,所以比較能夠承受攻擊[5]。
- 傷害框(hurtbox):指一吓攻擊(以子彈等物件代表)嘅命中框,一吓攻擊嘅傷害框要同一個目標嘅命中框碰撞先可以對個目標造成傷害[6]。
睇埋
[編輯]註釋
[編輯]文獻
[編輯]- Szauer, G. (2017). Game Physics Cookbook (PDF). Packt Publishing Ltd.
攷
[編輯]- ↑ McShaffry, M. (2014). Game coding complete. Nelson Education. Ch. 2.
- ↑ Integration Basics: How to integrate the equations of motion 互聯網檔案館嘅歸檔,歸檔日期2018年10月26號,.. Gaffer on Games.
- ↑ Ericson, Christer. Real-time Collision Detection. Elsevier, 2005.
- ↑ Video Game Physics Tutorial - Part II: Collision Detection for Solid Objects. Developers. "'The Sort and Sweep Algorithm" 同埋 "Dynamic Bounding Volume Trees",後者用到二元樹嘅概念,將啲物件分做唔同「組」。
- ↑ Apex Legends player explains how to fix Wraith's hitbox 互聯網檔案館嘅歸檔,歸檔日期2020年1月14號,..
- ↑ Here are the unlisted Season 5 patch notes for Street Fighter 5 互聯網檔案館嘅歸檔,歸檔日期2020年1月14號,..
拎
[編輯]- "Math and Physics". GameDev. Archive. 原著喺February 22, 2011歸檔.
- "Physics Engines List". Database. Digital Rune. Mar 30, 2015 [2010]. 原著喺March 9, 2016歸檔.