This document is about: QUANTUM 2
SWITCH TO

Blueless

Level 4

概述

這個範例附有完整的源程式碼,並且展示了如何使用Quantum建立一個快速且充滿動感的線上2D平台射擊遊戲。

免責聲明:範例遊戲由BitCake Studio針對Photon引擎來開發。

下載

版本 發布日期 下載
2.1.7 2023年6月15日 Quantum Blueless 2.1.7 組建 251

在您開始之前

為了以線上多人玩家模式來運行範例,首先在Photon引擎儀表板中建立一個Quantum應用程式帳號,然後貼上它到PhotonServerSettings資產中的AppId欄位。
然後在場景選單中載入Menu場景並且按下Play

技術資訊

  • Unity:2020.3.20f1.
  • 平台:PC (Windows / Mac)、WebGL及行動裝置(Android)

聚焦點

技術

遊戲遊玩

  • 快節奏、2D平台射擊遊戲。
  • 雙重跳躍。
  • 區域傷害。
  • 榴彈。
  • 武器裝填時間。
  • 使用武器庫存更換武器。

控制

使用A S以移動,Space以跳躍,Q E以更換武器,F以使用榴彈,Left Mouse Button以射擊,並且使用滑鼠游標以瞄準。

有用的模式

基於差量移動的射線投射拋射物

這是一個好的方法,以防止快速的子彈穿過牆壁。一個基於方向及速度的射線用於預測子彈的下一個移動,並且在可能的情況下偵測出一個命中。

C#

Physics2D.HitCollection hits = frame.Physics2D.LinecastAll(bulletTransform->Position, futurePosition);
for (int i = 0; i < hits.Count; i++)
{
  var entity = hits[i].Entity;
  ...
  if (entity == EntityRef.None)
  {
    bulletTransform->Position = hits[i].Point;
    // Applies polymorphic behavior on the bullet action
    data.BulletAction(frame, bullet, EntityRef.None);
    return true;
  }
}

中斷連線系統

使用確定性輸入旗標,我們可以檢查玩家是否出席。所以,一陣子沒有出席的玩家的實體將從模擬中被移除。

C#

public override void Update(Frame frame)
{
  frame.Global->DisconnectTime += frame.DeltaTime;

  var robotsFilter = frame.Filter<PlayerID, Status>();
  while (robotsFilter.NextUnsafe(out var robot, out var playerID, out var robotStatus))
  {
    DeterministicInputFlags flags = frame.GetPlayerInputFlags(playerID->PlayerRef);

    if ((flags & DeterministicInputFlags.PlayerNotPresent) == DeterministicInputFlags.PlayerNotPresent)
    {
      robotStatus->DisconnectedTicks++;
    }
    else
    {
      robotStatus->DisconnectedTicks = 0;
    }
    if (robotStatus->DisconnectedTicks >= 15)
    {
      frame.Destroy(robot);
    }
  }
}
Back to top