Battle Royale TopDown
Available in the Gaming Circle and Industries Circle
Quantum從上到下大亂鬥範例目前只提供給擁有啟用中的Photon遊戲圈或Photon行業圈訂閱的使用者。
您的遊戲圈會員資格提供了快速建立及運行成功的多人玩家遊戲所需的所有範例、SDK及支援。針對非遊戲,我們的行業圈提供您完整的套件加上獨家授權選項。
概述
這個範例附有完整的源程式碼,並且展示了Quantum如何針對32名玩家來建立一個從上到下的大亂鬥遊戲。
它展示了大亂鬥遊戲的基礎的功能,比如死亡區域、庫存等等。
下載
版本 | 發布日期 | 下載 | ||
---|---|---|---|---|
2.1.7 | 2023年6月22日 | Quantum 從上到下大亂鬥 2.1.7 組建 260 |
技術資訊
- Unity:2020.3.37f1;
- 平台:PC (Windows / Mac),及行動裝置(Android);
聚焦點
技術
- 從上到下的角色控制器。
- 基於差量移動的射線投射拋射物。
- Respown點附有實體原型。
遊戲遊玩
- 榴彈發射器。
- 針對2.5D物理的自訂重力。
- 火箭發射器附有動畫曲線加速。
- 掉落武器系統。
- 大亂鬥死亡區域。
- 玩家打擊訊息。
- 針對安全區方向的UI指示器。
- 治療強化物;
- 適用於行動裝置的UI控制。
控制
使用W
A
S
及D
以移動,Q
、E
或Mouse Scroll
以更換武器。站靠近一個物品,直到幾秒鐘後收集它。
榴彈發射器
當發射時,發射器具現化一個榴彈,其行為是一個彈跳的物理物件,能夠穿越足夠低的障礙物。為了在一個2D的基於物理的遊戲中完成這個行為,將模擬一個 自訂重力 並且結合 2.5D轉換。
C#
public override void Update(Frame f, ref Filter filter)
{
EntityRef entity = filter.Entity;
CustomGravity* customGravity = filter.customGravity;
Transform2DVertical* transformVertical = filter.TransformVertical;
PhysicsCollider2D* collider = filter.Collider;
if (customGravity->VerticalSpeed <= 0)
{
var distance = transformVertical->Height + FPMath.Abs(customGravity->VerticalSpeed * f.DeltaTime);
if (transformVertical->Position <= distance - (collider->Shape.Circle.Radius))
{
if (customGravity->VerticalSpeed > _bounceThreshold)
{
transformVertical->Position = _groundHeight;
customGravity->Grounded = true;
}
else
{
customGravity->VerticalSpeed = -customGravity->VerticalSpeed / (1 + _restitution);
}
}
else
{
customGravity->Grounded = false;
}
}
else
{
customGravity->Grounded = false;
}
if (customGravity->Grounded == false)
{
transformVertical->Position += (customGravity->VerticalSpeed) * f.DeltaTime;
customGravity->VerticalSpeed += _gravityForce * f.DeltaTime;
}
}
死亡區域
在大亂鬥遊戲中,死亡區域的功能像是一個典型危險區域,並且有兩個狀態:等待——大小不會改變,但是在安全區以外的玩家將受到傷害,以及區域縮減——安全區逐漸縮減大小,直到它達到一個預先確定的目標大小以及隨機指派的位置。
C#
DeathZoneConfig config = frame.FindAsset<DeathZoneConfig>(Config.Id);
FP elapsed = config.Timers[Iteration] - ChangeStateDelay;
FP t = FPMath.Clamp01(elapsed / config.Timers[Iteration]);
CurrentRadius = FPMath.Lerp(config.Radius[Iteration], TargetRadius, t);
CurrentCenter = FPVector2.Lerp(InitialIterationCenter, TargetCenter, t);
第三方資產
拋射物範例包含由其各自的創作者提供的多個資產。您可以在他們各自的網站上為自己的專案獲得完整的套件:
- Jean Moreno的卡通FX重製自由版
- Quaternius的Toon射擊遊戲套件
重要事項 :為了在商業專案中使用它們,需要從各自的創作者來購買授權。
Back to top