Importing.DxLib (1.0) | 2010-10-14 20:24 |
雛形 (雛形) | 2010-07-22 18:21 |
ニコ生ゲーム開発 : ロジック開発ドキュメント。 * 実際のソースコードと異なる場合があります。 * 一部は、引数や型の情報を省略しています。実際のソースコードを確認して下さい。 ------------------------------------------------------------------------------------------ Characterクラス BodySize : キャラクタのサイズを取得する。仕様上 32ピクセル固定。 MiddleBodySize : キャラクタの中点からのサイズを取得する。 32ピクセルの場合、16ピクセルになる。 Speed : 移動速度 Pos : 位置 Gravity : 割り当てる重力値 JumpPower : ジャンプ力 NowJumpPower : 現在のジャンプ力。落下と同時に低下する。 IsNowJumping : キャラクタが空中に居るかどうかを取得します。 IsBoosting : 高速移動を行うかどうか設定または、取得します。 CanDefaultAction : キャラクタの移動を自動制御するかどうか。falseの場合は、既定の移動計算は、行われなくなる。 ActionEventなどで細かな制御を行う場合や勝手に座標が変わると不都合が発生する場合など。 ActionCellCount : 画面外でキャラクタの行動を発生させるための許容セル数を設定または、取得する。 画面に映るキャラクタは、すべて行動を行うが画面外は、通常休止状態となりキャラクタの行動は、行われない。 ActionCellCount = 3 とした場合、画面外から3セル分以内であれば、行動を実行する。 なお、ActionCellCount = 0 とすれば、画面外であってもキャラクタの行動は、実行される。 ■■■■■■■■■■■■■■■■■■ ■■□□□□□□□□□□□□□□■■ ■■□□□□□□□□□□□□□□■■ ■■□□□□□□□□□□□□□□■■ ■ 行動を実行しないエリア ■■□□□●●●●●●●●□□□■■ ● 可視エリア(行動を実行する) ■■□□□●●●●●●●●□□□■■ □ 不可視エリア ■■□□□●●●●●●●●□□□■■ (ActionCellCountで指定された範囲であれば行動を実行する。) ■■□□□●●●●●●●●□□□■■ ■■□□□●●●●●●●●□□□■■ ■■□□□●●●●●●●●□□□■■ ■■□□□□□□□□□□□□□□■■ ■■□□□□□□□□□□□□□□■■ ■■□□□□□□□□□□□□□□■■ ■■■■■■■■■■■■■■■■■■ DirectionTypes TryMove( x , y ) 指定したピクセル座標への移動を試みる。 移動途中に障害物があった場合は、その場で移動を停止する。 衝突した場合は、衝突した方向をDirectionTypes列挙子の組み合わせを返します。 DirectionTypes.Noneの場合は、衝突はしていません。 Dispose() キャラクタを破棄します。 Action() キャラクタの移動を実行してActionEventを発生させます。 ActionEvent イベントハンドラです。Action()が呼び出されキャラクタの移動処理が行われたあとに発生します。 LogicParameter ActionEventで使用されるフラグやカウンターなどのパラメータの格納などに使用します。 ----------------------------------- ActionEvent => キャラクタの移動処理後に行われるイベント キャラクタの固有の動作、処理、アイテムの効果などは、すべてActionEventに定義します。 newChar.ActionEvent += new EventHandler<CharacterActionEventArgs>( ( sender , e ) => { // ここにイベントの内容を記述する }); sender : イベントの発生源のオブジェクト。この場合は、Characterオブジェクト。 e : イベントに渡されたパラメータ。 e.Target : Actionが実行されイベントを発生したキャラクタ。 e.IsHit : プレーヤーと衝突したかどうかを取得する。 e.ToHitCell : 移動中に衝突したセルをレイヤーを指定して取得する。 e.ToBlock : 移動中に衝突したセルがブロック属性または、ステージ範囲外かどうか取得する。 有効になっている地形レイヤーをすべて検査します。 e.ToVerticalPos : 垂直方向で移動を阻止された座標を取得する。 e.ToHorizontalPos : 水平方向で移動を阻止された座標を取得する。 ・衝突した方向を取得する DirectionTypes CharacterAction.ToCharacterDirection( Character , Character , bool ); キャラクタ同士の距離が最も近い方向を取得します。 ※ 回転や一定方向への平行移動などよく使われる処理は、CharacterActionクラスにいくつかのメソッドを定義しています。 ------------------------------------------------------------------------------------------ Speedクラス キャラクタの移動速度を表す。 X 現在のX軸の速度 Y 現在のY軸の速度 MaxX X軸方向の最高速度 MaxY Y軸方向の最高速度 MaxBoostX 高速移動自のX軸方向の最高速度 MaxBoostY 高速移動自のY軸方向の最高速度 Reset() 現在の速度を0に設定して移動速度を打ち消す。 [Memo] X < 0 : 左 Y < 0 : 上 X > 0 : 右 Y > 0 : 下 ------------------------------------------------------------------------------------------ Posクラス キャラクタやセルの座標を表す。 CellX X軸方向のセル単位の座標 CellY Y軸方向のセル単位の座標 X X軸方向のピクセル単位の座標 Y Y軸方向のピクセル単位の座標 PrevX,PrevY キャラクタの軌道計算に用いるために使用される前回のピクセル座標。 MovingDirection X,YとPrevX,PrevYを用いて算出される移動方向。[Flags] Direction キャラクタの向き。最後に向いていた方向を返す[Flags] Reset() PrevX,PrevYをX,Yと同期する。 Cell ImmediateCell( DirectionTypes , LayerTypes ) 直近(1セル先)のセルを取得します。 □□□□□ □123□ □4自5□ □678□ □□□□□ 1 = Top | Left 左上 2 = Top 上 3 = Top | Right 右上 4 = Left 左 5 = Right 右 6 = Bottom | Left 左下 7 = Bottom 下 8 = Bottom | Right 右下 自= None 自分自身 bool ImmediateBlockCell( DirectionTypes ) 直近(1セル先)がBlock属性であるかどうかを取得します。 表示されてる地形レイヤーをすべて検査します。 ------------------------------------------------------------------------------------------ GameMapクラス ゲーム実行中のマップを管理する。 StageLoad ステージ(マップ)を読み込む。 StageNo 現在のステージ(マップ)番号を取得する。 Now 現在のマップを取得する。 IsMiddleShow Middleレイヤーを表示するかどうか設定または、取得する。 IsMiddleFrontShow MiddleFrontレイヤーを表示するかどうか設定または、取得する。 IsFrontCellBlock セル座標を指定して地形レイヤーがブロック属性または、ステージ範囲外がどうかを返す。 ------------------------------------------------------------------------------------------ CharacterActionクラス Rotation 中点を指定してキャラクタを回転します。 壁があっても擦り抜けます。 GivenDirection キャラクタを一定の方向に行き来するように移動する。 Verlet キャラクタをVerlet法に基づいて軌道計算を行い移動する。 HitBound 対象のキャラクタと衝突していた場合にリバウンドする。 HitStop 対象のキャラクタと衝突していた場合にその場で移動を停止する。 ToCharacterDirection キャラクタ同士の距離で最も近い方向を取得する。 MathExクラス 数学系メソッド Distance キャラクタ同士の距離を取得する。 2点間の距離を取得する。 Angle 2点間の角度を取得する。x1,y1からy1,y2を指した角度。 ------------------------------------------------------------------------------------------------------------------------------ データファイル構造 * XX = 2桁の数字 ステージファイルの場所 フォルダパス : Data/Stage/StageXX StXX_MapData.xml マップデータファイル。下記のようなXMLで表される。 ---------------- XML --------------------- <?xml version="1.0" encoding="utf-8"?> <SettingLocal> <Header> <Bgm /> <BackChipSetName /> <BackMiddleChipSetName /> <MiddleChipSetName /> <MiddleFrontChipSetName / > <FrontChipSetName /> <CharacterChipSetName /> </Header> <Map> <BackLayer /> <BackMiddleLayer /> <MiddleLayer /> <MiddleFrontLayer /> <FrontLayer /> <CharacterLayer /> </Map> </SettingLocal> ------------------------------------------- SettingLocal/Header/Headerで定義されたファイル名がそれぞれのレイヤーに適応される チップ定義ファイルです。* Bgmは、以外。 チップ定義ファイル * 1行目は、チップに割り当てる画像ファイル。 2行目以降は、左から "ID,識別名,摩擦値,属性,説明" ---------------------------- St01_ChipImg06.jpg 0,0,0,None,空白 1,1,0,0,なのは 2,2,0,0,フェイト 3,3,0,0,はやて 4,4,0,0,敵1 ---------------------------- キャラクタ画像(ドット絵) Data\CharacterImagesフォルダにキャラクタごとに画像(.jpg)を作成する。 ドット絵の配置については、上記フォルダ内の"テンプレート.jpg"を参照。 ファイル名は、"キャラクタ番号.jpg" このときキャラクタ番号は、0埋めの3桁。 例 : 001.jpg