感想練習帳

色んな物の感想とか、勉強、プログラム関係の備忘録とか(感想は基本ネタバレあり)

【Unity】TimeScaleに影響されないDeltaTime

ついこの間までTimeScaleの存在を知らずポーズ機能の実装に自前のTimerを作ったりしていたんですが(なんか始める前に調べろよアホって感じですが)、TimeScaleの影響を受けないDeltaTimeの使い方はないのかと今度は調べたらありました。
Time.unscaledDeltaTime
なお、TimeScaleの影響を受けないTimeは
Time.unscaledTime

【Corgi Engine】CameraControllerクラスのPublic Method

メソッド

LookDown ( )

カメラを下げる。

LookUp ( )

カメラを上げる。

ResetLookUpDown ( )

LookUpDownをリセット。

Shake ( Vector3 shakeParameters )

カメラを揺らす。引数はVecter3を通じて強度、持続時間、減衰として渡す。

TeleportCameraToTarget ( )

カメラをターゲットに瞬間移動させる。ターゲットは通常はプレイヤー。

【Corgi Engine】LevelManagerクラスのPublic Method

メソッド

FreezeCharacters ( )

キャラクターを凍結させる。動きを止め。CharacterStates.CharacterConditions.Frozenにする。

GotoLevel ( string levelName )

プレイヤーを指定したレベルに移行させる。

IEnumerator GotoLevelCo ( string levelName )

短い時間待ってから、指定したレベルをロードする。返値はレベルのコルーチン。

GotoNextLevel ( )

SetNextLevelで設定したレベルへ。

KillPlayer ( Character player )

プレイヤーを殺す。

SetCurrentCheckpoint ( CheckPoint newCheckPoint )

現在のチェックポイントを設定。

SetNextLevel ( string levelName )

次に行くレベルの設定。

Start ( )

初期化。

ToggleCharacterPause ( )

キャラクターのポーズ状態を切り替える。

UnFreezeCharacters ( )

キャラクターのフリーズを解除する。

【Corgi Engine】GameManagerクラスのPublic Method

メソッド

AddLives(int lives, bool increaseCurrent)

最大ライフを増やす。increaseCurrentをTrueにした場合は現状のライフも同時に増える。

AddPoints(int pointsToAdd)

スコアを足す。

ClearAllPointsOfEntry ( )

全てのエントリーポイントをクリア。

ClearPointOfEntry ( string levelName )

指定したレベルのエントリーポイントをクリア。

ClearSelectedCharacter ( )

選択されているキャラクターをクリア。

GainLives ( int lives )

ライフを獲得する。

PointsOfEntryStorage GetPointsOfEntry ( string levelName )

指定したレベルのエントリーポイントを全て格納したクラスを返す。

LoseLife ( )

ライフを減らす。

OnMMEvent ( MMGameEvent gameEvent )

イベントをキャッチして、そのイベントに対応した動作を行い、サウンドを鳴らす。

Pause ( PauseMethods pauseMethod = PauseMethods.PauseMenu )

ポーズするか、ポーズ解除する。

Reset ( )

GameManagerをリセットする。

ResetAllSaves ( )

セーブファイルを全て削除する。

ResetLives ( )

ライフを初期値に戻す。

ResetTimeScale ( )

TimeScaleを最後に保存された物にする。 TimeScaleでポーズやスローを制御できる。

SetPoints ( int points )

スコアを指定した物にセットする。

SetTimeScale ( float newTimeScale )

TimeScaleをセットする。

StorePointsOfEntry ( string levelName, int entryIndex, Character.FacingDirections facingDirection )

エントリーポイントを貯蔵する。

StoreSelectedCharacter ( Character selectedCharacter )

選択したキャラクターを次のレベルに備えて貯蔵する。

UnPause ( PauseMethods pauseMethod = PauseMethods.PauseMenu )

ポーズを解除する。

メンバ変数

int CurrentLives

現在のライフ。

string GameOverScene

ライフがなくなった時に移行するシーン。

int MaximumLives

最大ライフ。

int TargetFrameRate

目標フレームレート。デフォルトは300。

プロパティ

Vector2 LevelMapPosition

現在のプレイヤー位置

bool Paused

ポーズしてたらTrue。

int Points

スコア

List PointsOfEntry

エントリーポイントのリスト

Character StoredCharacter

貯蔵されている選択されたキャラクター

bool StoredLevelMapPosition

1回でもLevelMapPositionが保存したことがあればTrue。

【Corgi Engine】CorgiControllerのパラメータ設定

ColisionMasks

  • DetachmentMethod
    ワンウェイかムービングプラットフォームからジャンプした時に、ワンウェイ、ムービングのアタリ判定を短時間無効にするが、その対象はワンウェイ、ムービングレイヤー全体か、ジャンプする時に触れていたオブジェクトのみにするのかを設定。

Raycasting

RayOffsetとCrouchedRaycastLengthMultipierに関してはちょっと値を変えたりしてみたがよく分からなかった。必要あれば詳細を調べてみようと思う。

【Corgi Engine】ゲームオブジェクト発生ポイントの作成

豊富にサンプルの入っているCorgi Engineだけど敵が最初から配置されているタイプのサンプルシーンが大部分なせいか、ゲームオブジェクトの発生例があまりなかったのでメモ。
砲弾の発生だが以下のサンプルが参考になる。
CorgiEngine\Common\Scripts\Agents\AI\PathedProjectileSpawner.cs

最小限の構成としては
発生させたいPrefabをInstantiateするスクリプトを空のゲームオブジェクトにaddするだけ。
Instantiateに親オブジェクトのtransformのpositionとrotationを渡せば、その位置に発生します。
後はお好みでタイマーやカウンター、発生エフェクトなどを付けて出来上がり。 発生させるPrefabのコンポーネントに値を設定したい場合はInstantiateしたオブジェクトを設定したいコンポーネント型にキャストしてフィールドなり、メソッドなりに値を渡せば良い。

2018/4/28追記

Assets\CorgiEngine\Common\Scripts\Agents\AIにTimedSpawner.csが追加されていた。こちらを参考にすれば普通に作れる。
考えてみれば当たり前だが上記とは違いObjectPoolerを使用した仕組みになってた。こちらのソースはObjectPoolerでオブジェクトを発生させる時の作法なども参考になる。