2Dプロジェクト体験まとめ
序文
この記事ではあまり詳しくは書きませんが、その時の使用感を簡単に記録します。
地図の描画
スプライトエディタ
写真を切り取ったり、アトラスで使用する必要がある写真を切り取るために使用されます。
オーバーレイ時の注意点(SortingLayerに関する知識)
並べ替えレイヤーが下位になるほど、レンダリング順序は遅くなります。
同じレイヤーの場合、レイヤー内の順序が大きいほど、レンダリング順序は遅くなります。
タイルパレットの使い方
まず、[Windows] パネルの下で [Tile Paltette] を開きます。
次に、新しいパレットを作成し
、カットしたアルバムをドラッグします。
次に、ブラシをクリックして画像を選択し、[シーン]パネルに描画します。
アニメーション タイル (アニメーション画像 (タイルまたはタイルとも呼ばれます))
プロジェクトパネルでアニメーションタイルを作成し、アニメーションする画像の数を選択します。画像では滝が4つのグリッドになっているので、4つのグリッドを追加し、対応する順序で滝の画像を塗りつぶします。合計3つアニメーション タイルが作成され、それをタイル パレットにドラッグし、動く滝として描画する絵を選択します。
プレイヤーの動き
プレイヤーの動きを実現するには、剛体、衝突体、ユニティ入力システムの 3 つのコンポーネントが必要で、
剛体は主にプレイヤーの移動やジャンプなどの物理的特性を実現します。
衝突ボディは主に、地形と相互作用し、どこに移動するかを担当します。
入力システムはプレーヤーの指示を受け取る役割を果たします。
プレイヤーの方向を反転する
1 つは対応する方向に Scale 値を変更する方法、もう 1 つはスプライト レンダラーの Filp を変更する方法ですが、個人の好みに応じてどちらの方法でも使用できます。
剛体
主にオブジェクトの物理的性質を実現しますが、ここで注意点があり、それはZ軸の回転をロックすることです。プレイヤーが操作するキャラクターは実際には絵なので、角にぶつかるとZ軸を中心に回転してしまう可能性が高いため、Z軸をロックする必要があります。
注意点
プレイヤーの上下方向の力は剛体に付属している値が一般的ですが、デフォルトでは重力の影響を受けるため、0に変更すると落下速度が非常に遅くなります。
コライダー
プレイヤーと地形の間の衝突は、コライダーを使用してトリガーされます。コライダーの形やサイズは自分で調整できます。キャラクターは通常、楕円を使用します。
入力システムInputSystem(新バージョンまたは旧バージョン)
古いバージョン
旧バージョンでは、InputSystem に入力された値を取得し、取得した値に基づいて対応する操作を実行します。
新しいバージョン: 視覚化ツールが追加されました。
たとえば、プレイヤーキャラクターにジャンプイベントを追加したいとします。
あるいは、プレーヤーの上下左右のキーの動きを監視したいかもしれません。
対応するデータを取得し、それを剛体に与えて、対応する移動またはジャンプ操作を実行します。
プレイヤーの動き
リジッドボディの速度を変更するだけです。
プレイヤージャンプ
ジャンプする際の注意点があり、制限がなければ画面外に飛び出すまでジャンプし続けることができます(クレイジーバード)。したがって、プレイヤーのジャンプにいくつかの制限を追加する必要があります。
実装方法 1: 足元の衝突をリアルタイムに検出。
足元の衝突をリアルタイムに検知し、地面に触れるとジャンプ可能状態に設定し、それ以外の場合はジャンプを禁止します。
実装方法2:イベントから登録する
イベントに始まりがある場合、イベントには終わりがあるため、ジャンプの開始が検出されたときに -1 になるジャンプ数を設定できます。このメソッドは、小道具 (たとえば、アイワナーゲーム)。ジャンプするたびにジャンプが残っているかどうかが判定され、残っていない場合はジャンプが禁止されます。
プレイヤーへの多段攻撃の実装
アニメーションの実装方法
以下の図に示すように、実装は非常に簡単です。
ここで「Has Exit Time」パラメータを使用します。
まず、次の攻撃に入る条件が同じであると判断され、プレイヤーが攻撃状態にあり、攻撃がトリガーされます。
ここは終了時間です。パート 0.9 の前に攻撃を押すと、プレイヤーが攻撃状態に設定され、攻撃がトリガーされます。それ以外の場合は、Exit に入り、現在の攻撃を終了します。プレイヤーステータスは終了時にリセットされます。
ダメージ判定方法
コライダー経由でトリガーされます。
ここではポリゴンのコリジョン ボディを使用し、キャラクターの攻撃アニメーションをフレームごとに表示し、キャラクターが攻撃するときにフレーム内の武器と同じコリジョン ボディを描画し、このコリジョン ボディを True および false に設定する必要があります。残りのフレームについては。次に、衝突する敵を取得し、敵にダメージと攻撃効果を与えるスクリプトを武器に追加します。
2Dアニメーションの使用
共通のプロパティ
終了時間あり
この属性はよく使用され、現在のアクションから次のアクションに切り替えるには、現在のアクションの再生が終了する必要があるかどうかを意味します。チェックを外すと、次のアクションに直接入ることができます。
ツリーまたはセカンダリ メニューの最後のアニメーションである場合、条件がない場合は、この属性をチェックする必要があります。そうでない場合、最後のアニメーションは Unity によって直接スキップされます。
フレームアニメーションを作る
対応する画像をアニメーションパネルに挿入すると、画像や画像のアルファ値など、同一フレーム内で複数の項目を変更することができ、下図のように主人公が攻撃されるアニメーションも点滅します。
アニメーション ツリー (BlendTree) (通常、ジャンプ状態または走行状態と歩行状態を切り替えるために使用されます)
つまり、アニメーション ツリーは、一連のアニメーションを 1 つの値で制御する場合に使用できます。
ここではプレイヤーのジャンプ距離を測定し、ジャンプ動作はジャンプ、上方向への加速、空中でのホバリング、地面への下方向への加速などに分類されます。これらはすべてプレイヤーの垂直速度によって制御できます。
二次アニメーション メニュー (ステート マシン)
これは、現在のアニメーション パネルに新しいアニメーション パネルを追加することです。これは、現在のクラスに別のクラスを追加することと同じです。内部には個別の判定条件があり、アニメーションツリーとは異なり、内部の値も個別に判定することができます。
注意点
一部のアニメーションでは、同時に衝突ボディを変更する必要があります
たとえば、しゃがむアニメーションでは、プレイヤーがしゃがむと、実際には衝突エリアが小さくなるため、衝突ボディのエリアとオフセットを変更する必要があります (衝突ボディはアンカー ポイントをサポートしていないため、衝突エリア全体がズームされます)内外に)
コライダー
共通のプロパティ
レイヤーのオーバーライド
どのレイヤー レベルと対話するか、どのレイヤー レベルと対話しないかを選択できます。インタラクションの優先順位を制御することもできます。数値が大きいほど、優先順位が高くなります (オブジェクト上に複数のコライダーがある場合)。
複数のコライダー (コライダーとトリガーの両方) の使用 (1 つのオブジェクトが他のオブジェクトと異なる相互作用効果を持つため)
たとえば、敵は地形に衝突する必要がありますが、それはプレイヤー キャラクターのトリガーにもなります (衝突時にノックバックやダメージを引き起こします)。この時点で非常に恥ずかしい点があります。isTriger がチェックされている場合、isTriger は地形とインタラクトせず、直接落下します。チェックされていない場合、プレイヤーとインタラクションしてダメージやノックバックをトリガーすることができないため、必要なコライダーは 2 つだけです1 つはコライダーとして、もう 1 つはトリガーとして使用するだけです。
敵の各種ステータス判定
壁に当たる
敵の前にコライダーを追加し、壁に衝突するかどうかを検出してみてください。壁に衝突すると、敵は向きを変えます。
崖から落ちるかどうか
敵の正面と下にコライダーを追加して、敵の下に道があるかどうかを検出し、道がない場合は戻ります。
カメラ関連の用途
カメラフォロー
cinemaache コンポーネントを使用して、2D カメラを選択します
カメラ範囲がロックされ、表示領域が指定されます。
[拡張機能の追加] を追加し、Confinder2D を選択し、マップ内でコライダーを選択して範囲を設定します。このコライダーはトリガーとして使用する必要があることに注意してください。そうしないと、主人公の行く手を妨げる可能性があります。
カメラを使用してアタックのジッター感を作り出す
Inpulse リスターを追加し、関連するスクリプトをゲームに追加して、関連するパラメーターを設定します。
音響効果
オーディオミキサー
サウンド エフェクトを分類すると、すべての音量を 1 つの統合制御で実現でき、個々のサウンド エフェクト自体を個別に制御できます。
モバイル画面制御
画像を追加してから、Unity の新しい入力システムと組み合わせて使用されるオンスクリーン スティックを追加するだけで実現できます。
エラーがある場合は、このパラメータを変更するだけです。
ゲーム一時停止機能
Time.timeScale によって制御され、1 は通常を意味し、0 は一時停止を意味します。この値は、個人のニーズに応じてゲームの速度を制御することもできます。