動作遊戲是不是在兩個模型交互的時候播放相應的動畫?還是用的物理系統?動作遊戲的製作流程?
兩種技術都會用到。
1:傳統的類似於拳皇 的橫版 格鬥遊戲,裡面是採用 包圍盒技術,做物理碰撞檢測的
M.U.G.E.N 可以參考這個 格鬥遊戲編輯器
2:ARPG 遊戲
ARPG裡面對動作的效果的精度要求沒有格鬥那麼高,基本上都是原地靜態動作,加上物理系統控制的位移就可以實現。
例如擊飛動作,首先設計一套 人物被擊飛的原地動作,接著遊戲運行時,使用物理計算得到人物的位移, 兩個合成就是一個完整的擊飛效果。
例如在unity裡面,通過給對象添加一個CharacterController,運行時只需要去設置CharacterController的移動速度,以及模型播放一個擊飛動畫就可以了。
並且為了改善效果,通常加上一些粒子效果,鏡頭震動,就基本上滿足需求了。
例如像 火炬之光 這類的遊戲就是這麼做的。
這個demo 裡面有擊飛怪物的樣例
鏈接: 百度雲 請輸入提取密碼 密碼: b1l6
對死亡動畫的處理還可以使用 ragdoll 布偶系統
http://box2d.googlecode.com/files/GDC2012_ErinCatto_Ragdolls.pdf
暗黑破壞神3 中使用了這種技術
普通攻擊動作,是通過給攻擊動畫中的某一幀 添加動畫事件,在該事件發生的時候,觸發粒子,傷害等效果
3:刺客信條
這種遊戲類似於3d的格鬥遊戲,對動作物理系統精度要求非常高,使用物理引擎
Havok Physics
Havok Engine Featured in Assassin』s Creed IV: Black Flag, Watch Dogs and The Division ? GamingBolt.com: Video Game News, Reviews, Previews and Blog
具體演算法 後續調查之後補充
兩個都會用。
一般攻擊,被擊這些動作是播放預製的動畫。
有些特殊技能效果,比如擊飛,撞牆後落地,用物理效果混合預製動畫使用。
完全使用物理製作被擊也可以做到。會節省一部分動畫工作量,效果也更加真實,但是有些不可控。
UDK | PhysicalAnimation
這是虛幻使用的做法。其他引擎大同小異。
這個問題其實應該很簡單就能想明白,首先遊戲引擎當中的物理計算大多數都是對於重力和物體運動等做的計算。用在碰撞上的大多也只是物體與物體 物體與牆之間的碰撞對於細節碰撞大多數遊戲都沒有製作,有的製作細節的遊戲也只是對於各個身體部分對其他物體或者自身進行碰撞計算。對於普通動作遊戲而言只是進行了簡單的判斷計算,簡單來說比如:A攻擊了B B有多種響應動作比如防禦或者不做動作或者攻擊等,然後根據判斷是什麼動作,產生相應的結果。現在的動作遊戲都是如此。對於動作與動作之間的碰撞對於現在的遊戲製作來說太困難,困難在於複雜度,硬體,還有交互方式。硬體最怕物理演算,物理演算會消耗太多的資源而且要不斷優化演算達到即使演算的效果。動作遊戲如果做成即使演算的全物理碰撞所付出的是大量的計算機資源。第二點關於交互性就局限了動作自由度,所以這樣做肯定還是判斷式靠譜。不過還有兩者結合的一些遊戲,也就是在判斷上加上是敵人用腳打的你的臉還是用手。大致也是和判斷方式相同只是有更多的選擇。而全物理演算也就是千萬種方式的判斷達到和現實一樣的自由性。所以只要未來硬體達到一定程度這樣的動作遊戲也就會產生。
關於製作細節簡單的說就是先想好招式然後配合多樣化的招式來和招式之間運算產生結果。大概就是動作遊戲製作時的想法。其他的就是代碼實現還有動作(動畫)的製作,美術等事情。
大眾些的,就是在動畫播放到某一幀時響應某個事件
比如我砍你,在動畫執行到刀砍下來的某一幀時,計算下咱倆的距離,如果可以砍到,我的類就通過附加在砍人動畫上的Event傳給你你被砍了的消息,你的類就執行響應方法,Animator做被砍的動作推薦閱讀:
※開發類似《爐石傳說》這樣的iOS遊戲的客戶端、伺服器端程序員分別需要掌握哪些技能?
※六自由度的VR中,用戶的頭穿過虛擬剛體時是什麼體驗?
※如何從程序的角度理解3D術語?
※unity和虛幻引擎的模型不都是從3dmax、maya中導過來的嗎?為什麼畫質會相差這麼大?