using System; using System.Collections.Generic; using Microsoft.Xna.Framework; using Microsoft.Xna.Framework.Content; using Microsoft.Xna.Framework.Graphics; namespace SangokushiGunki01 { // 槍兵クラス(マップオブジェクトクラスを継承) class SpearMan01 : Mapobject { // コンストラクタ public SpearMan01(ContentManager content, Unit unit, int index, ModelType modelType, int drawMotionNumber, int animeStartTexture) : base( unit, index, modelType, drawMotionNumber // 表示モーション番号 ) { // 表示テクスチャ番号の初期設定 this.animeStartTexture = animeStartTexture; // 経過時間の初期設定 this.animeStartTime = 0; // 移動タイプの初期設定 base.moveType = MoveType.Walk; // 移動速度(最大) base.moveSpeedMax = 1.0f; // モーションデータの作成 structMotionData[] motionData = new structMotionData[3]; motionData[0] = new structMotionData( "Unit/SpearMan01/Attack01/SpearMan01_Attack01_", 32, // 方向画像数 32, // 方向画像登録数 20, // 2Dアニメ画像枚数 80, // アニメ画像を切り替える間隔(ミリ秒) 0.5f, // 原点補正値(板ポリゴンの原点を下にずらす) 1.0f, // スケール -1 // 次に表示するモーション番号(-1:現在のモーションをループする) ); motionData[1] = new structMotionData( "Unit/SpearMan01/WalkStart01/SpearMan01_WalkStart01_", 32, // 方向画像数 32, // 方向画像登録数 12, // 2Dアニメ画像枚数 120, // アニメ画像を切り替える間隔(ミリ秒) 0.5f, // 原点補正値(板ポリゴンの原点を下にずらす) 1.0f, // スケール 2 // 次に表示するモーション番号(-1:現在のモーションをループする) ); motionData[2] = new structMotionData( "Unit/SpearMan01/WalkLoop01/SpearMan01_WalkLoop01_", 32, // 方向画像数 32, // 方向画像登録数 6, // 2Dアニメ画像枚数 80, // アニメ画像を切り替える間隔(ミリ秒) 0.5f, // 原点補正値(板ポリゴンの原点を下にずらす) 1.0f, // スケール -1 // 次に表示するモーション番号(-1:現在のモーションをループする) ); // 2Dアニメーション用画像の呼び出し base.LoadAnime2d(content, motionData, false); } // Update処理 public override void Update(GameTime gameTime) { // 経過時間を加算 animeStartTime += (float)gameTime.ElapsedGameTime.TotalMilliseconds; // 表示テクスチャ番号を算出 animeStartTexture = (int)(animeStartTime / motionData[drawMotionNumber].TextureReplaceInterval); // 2Dアニメ画像枚数を超えたかチェック if (animeStartTexture >= motionData[drawMotionNumber].Anime2dMax) { // 表示テクスチャ番号を初期化 animeStartTexture = 0; // 経過時間を初期化 animeStartTime = 0; // 次に表示するモーション番号をチェック if (base.motionData[drawMotionNumber].nextMotionNumber != -1) // 表示モーション番号を変更 base.drawMotionNumber = base.motionData[drawMotionNumber].nextMotionNumber; } } // モーション変更 public void ChangeMotion(int drawMotionNumber) { base.drawMotionNumber = drawMotionNumber; } } }