ベストアンサー
2Dプラットフォーマー(左右)の場合、どのように考えるかを考える最も簡単な方法これを行うと、プレイヤーが変形し、スプライトレンダラーがそのように反転し、翻訳速度もそのように反転します。プラットフォーマーには、敵のパスファインディングは実際にはありません。例は次のようになります。
[SerializeField] Transform player;
[SerializeField] SpriteRenderer rend;
[SerializeField] float speed;
void Update()
{
if(player.pos.x < transform.position.x)
{
renderer.flipX = true;
transform.Translate(new Vector2(-speed, 0f));
}
else
{
renderer.flipX = false;
transform.Translate(new Vector2(speed, 0f));
}
回答
時間があるときに(=仕事の合間に:d)取り組んでいたプロジェクトの1つは、非常に古典的な、昔ながらの低レベルの2Dでした。プラットフォーマーなどに適したスプライトベースのゲームエンジン。理由だけで。
実際には、独自の2Dエンジンを作成して取り組むのは非常に楽しいことであり、十分に小さいため、作成できます。数ヶ月以内に自分で作業する何年も経っていないので、それを使ってゲームを作ることは決してできない、空のパイプロジェクトである大きな3Dエンジンのようなものではありません。独自の2Dエンジンをロールするのが少し時代遅れであるとしても、それでもかなり合理的です。
ほとんどの場合、私のゲームエンジン(プレーンWin32の上にC ++で記述)は次のもので構成されていました。-グラフィッククラス(低レベルのキャンバス)線、ポリゴン、または生のピクセルを描画できる場所)-画像からピースを組み合わせてアニメーションやスプライトを描画するためのスプライトクラス、およびビットマップテキストを描画するためのスプライトクラス-タイルセットの背景を管理するためのタイルセットクラス-単純なコンポーネントを備えたUIクラス階層(ボタン、パネル、リストボックスなど)-単純な物理エンジン(派手なものはなく、オブジェクトをある速度で動かし、他のオブジェクトや風景との衝突をトリガーできるもの)-単純なサウンドクラス-メインゲームこれらすべてを結び付け、マウスとキーボードのメッセージを送信し、UIオブジェクトにイベントを送信し、すべてのスプライトをレンダリングし、すべての物理オブジェクトを更新するなど、ループ/ゲームステートマシン。これは基本的に「心臓部」です。ゲーム。基本的なゲーム(および暗黙的にゲームエンジン)がどのように機能するかを理解したい場合は、この領域に焦点を当て、ゲームの状態、ゲームイベント、およびメインの更新/描画ループを管理します。 -プラットフォームに依存するWin32描画コードを小さなファイルにまとめる
ファイルコンバーター、タイルセットエディター、および.NET / C ++ / CLIを使用したアニメーションエディターも作成しました。本当にほとんどの作業は、スプライトと物理学のクラス、およびスプライトエディタの作成でした。