スポンサーサイト

上記の広告は1ヶ月以上更新のないブログに表示されています。
新しい記事を書く事で広告が消せます。

「自作DASH3 Part7投稿しました」

自作DASH3はロックマンDASHシリーズの二次創作です。
カンパは募集しません。
現在、声優をあてる予定はありません。


遅くなってすみません(^^;)

動画上げました
自作DASH3 part7 -久しぶり-

素材提供者等は自作DASH3のWEBページを御覧ください
自作DASH3_WEBページ

今回はモデル紹介と
【MMD】自作DASH3【Unity】の動画でどこまでが実際にゲームでできている部分なのかが
わかるような内容になってます
Part7_屋根の上
※画面は開発中のものです。

基本的に生放送で出した情報のまとめになっています。
パート6から、ほぼすべてのモーション・モデルが入れ替わりました。

まずは街の中を快適に走り回ったり、飛んだりできることを目標にしてます。

今回の動画で出ていなかった部分(音楽・新規モデルなど)についても順調(?)に製作中です。

英語版PVと英語版WEBページ鋭意製作中です><
基本的に更新まったりです><

【WEBページ更新しました】
●自作DASH3応援画像コーナーを新設しました。
ニコニコ静画で「自作DASH3」タグを付けると表示されます。
生放送「自作DASH3反省会」で紹介することがあります。
●開発画像(ギャラリー)に画像を追加しました。
スポンサーサイト

反響とか報告とかお礼とか

※自作DASH3は「ロックマンDASH」シリーズの二次創作であり、公式とは一切関係のない活動です

【動画について】
更新遅れてしまってすみません。
思っていた以上に反響があり、うれしい悲鳴を上げていました。
さて、動画や生放送で告知したように、プロジェクトが大きく動き出しました。
二次創作とは言え、あんなに大々的に告知しましたが、ゲームとしてはまだまだ先は長いです。
あの動画はフレディさんが「DASHファンと一緒に盛り上げれるように!」という事で、かなりの予告詐欺
になっています。いつかあの動画のように、フライキャリアーを乗り回せるようにがんばります!
モデル紹介_ボーン一家3



【募集について】
たくさんの方から応募メールをいただきました。どのメールもDASH愛に溢れていて、みんなで作りたかったのですが人数が多くなると大変なので少数の方だけに協力していただくことにさせていただきました。
音楽・モデル関係についてはほぼ決まり、募集は終了させていただきました。
プログラムについてはプロジェクトファイルの整理などこちらの準備が整い次第となりますのでもう少し時間がかかりそうです。

【イラストについてのお礼】
生放送でも少しだけ紹介させてもらいましたが、何人かの方から、この企画を知って、あるいはこの企画を応援する為に、という事でイラストを描いてもらいました。こういった形でDASHが盛り上がっていくのは、ファンとしても本当にうれしいです。ありがとうございました!

ニコニコ静画「自作DASH3」について
このタグが付いてると見つけやすくて嬉しいよ!
このタグをロックしてもらったら生放送で紹介させてもらいます!


【生放送のお礼】
第一回自作DASH3反省会が無事終了しました。たくさんのコメントと広告をしてもらいました!多くの方に見てもらい、緊張しましたが、楽しく放送できました。不定期での放送になりますので、次回はいつになるか分かりませんが、その時はなるべくコメント拾えるように頑張ります。これから応援してる方や、DASHファン、みんなと一緒になって出来る企画なども考えています。予定しているのは簡単なものですが、活動に余裕が出てきたら告知したいと思います。この自作DASH3反省会がファン交流の場になれればいいな!


【part7について】
今回の更新内容を簡単にまとめた動画を近いうちに上げたいと思います。ただのまとめだから期待しないでね。
モデル紹介_リーバード13

モーションがどうしてもおかしくなる

とうとう一カ月以上更新無いブログに表示される広告が・・・

さすがにまずいと思ったので適当に書きます。

MMDのVMD形式のモーションをUnityで使おうと思うのですがどうもおかしくなってしまいます。
MMDforUnityとMMD4Mecanimのどちらも試したのですが足のIKで不具合が出るようです。
足の角度が一瞬おかしくなったり、走るループモーションで最初はあまりおかしくなくても
しばらく走らせると途中からひどい状態になる場合もあります。

自分のやり方が悪いのか、モデルやモーションの変換が完全でないのかわからない状態です。
もう少し検証してみて解決したらその記事を書こうと思います。


製作の方ですがこういう不具合に時間をとられてしまいゆっくりではありますが一応進めてます。
決してガラケーからスマホに買い換えてそっちの方に時間とられているわけではありませんよ!決して(^^;)

キャラ操作とカメラのスクリプト公開(//∇//)

注釈を付け終わったスクリプトを公開しますね。
配置が崩れてしまってて見にくいですが(>_<)
全部終わったらプロジェクトファイルごと公開する予定。

スクリプトでおかしいところやこうした方がいいというアドバイスあれば教えてください。
これで完成というわけではなくてもっと良くします。特にカメラ。


■キャラ操作(プレイヤーキャラクターのGameObjectに付けるスクリプト)
※CharacterControllerとBarrett_Status(スクリプト)も同じGameObjectについている状態です

// プレイヤーの移動スクリプト

var walkSpeed : float = 7.0; // 移動速度
var jumpSpeed : float = 10.0; // ジャンプ速度
var gravity : float = 20.0; // 重力加速度
private var moveDirection : Vector3 = Vector3.zero; // 移動方向
private var playerDirection : Vector3 = Vector3.zero; //プレイヤーの向き
private var grounded : boolean = false; // 接地フラグ
var isControllable : boolean = true; // 操作可能かのフラグ

//CharacterControllerコンポーネントを取得
var controller : CharacterController;
controller = GetComponent(CharacterController);

//Barrett_Statusコンポーネントを取得
var barrettStatus : Barrett_Status;
barrettStatus = GetComponent(Barrett_Status);

function FixedUpdate()
{
if(!isControllable){ //操作不可の場合
Input.ResetInputAxes(); //入力を0にする

}else{ //操作可の場合

if(grounded){ // 接地している場合
moveDirection.y = -0.1;
// ×ボタンでジャンプ
if (Input.GetButtonDown("Batu")) {
moveDirection.y = jumpSpeed;
}

}else{ //接地していない場合
//y方向の速度を重力加速度で引く
moveDirection.y -= gravity * Time.deltaTime;
}

//カメラのtransformを取得
var cameraTransform : Transform = Camera.main.transform;
//カメラの前向きをworldに変換
var forward : Vector3 = cameraTransform.TransformDirection(Vector3.forward);
forward.y = 0; //y方向を無くす
forward = forward.normalized; //単位ベクトルに直す
var right = Vector3(forward.z, 0, -forward.x); //右向きを計算
var v = Input.GetAxisRaw("Vertical"); //入力を取得
var h = Input.GetAxisRaw("Horizontal"); //入力を取得
playerDirection = h * right + v * forward; //入力をカメラの向きに直す

//入力がある程度あればその方向にプレイヤーを向ける
if (playerDirection.magnitude > 0.1) {
transform.rotation = Quaternion.LookRotation(playerDirection);
}

playerDirection *= walkSpeed; //移動速度を掛ける
playerDirection += Vector3(0, moveDirection.y, 0); //y方向の値を加える
//移動する ※Move関数は他のコライダとの接触を戻り値として返す
var flags = controller.Move(playerDirection * Time.deltaTime);
//接地を調べる
grounded = ((flags & CollisionFlags.CollidedBelow) != 0);
}
}

//プレイヤーが動いているかを返す
function IsMoving()
{
return playerDirection.magnitude > 0.5;
}

//接地しているかを返す
function IsGrounded()
{
return grounded;
}


■カメラ(このスクリプトはどこに付けてもOKです)

//カメラのスクリプト

var normalCamera : GameObject; //カメラ
var lockMarkPrefab : GameObject; //ロックカーソルのプレハブ
var bulletSpawn : GameObject; //弾が発射されるポイント
var locktarget : Transform; //ロックオン対象
var xspeed : float = 30; //カメラを左右に振る速度
var yspeed : float = 100; //カメラを上下に振る速度
var playerObj : Transform; //プレイヤー
var xDistance = 1.0; //プレイヤーからカメラまでのx方向距離
var zDistance = 5.0; //プレイヤーからカメラまでのz方向距離
var yDistance = 2.0; //プレイヤー(足元)からのy方向距離
var xMinLimit = -20; //カメラが見上げられる最低角度
var xMaxLimit = 45; //カメラが見上げられる最高角度

private var y = 0.0; //カメラのy軸のrotation
private var x = 0.0; //カメラのx軸のrotation
private var lockMark : GameObject; //インスタンスされたロックマーク格納用
private var lockOn = false; //ロックオンフラグ

function Start ()
{
// カメラを見つける
if (!normalCamera){
normalCamera = GameObject.FindWithTag("MainCamera");
}

//プレイヤーを見つける
if (!playerObj){
playerObj = GameObject.FindWithTag("Player").transform;
}
}

function Update()
{
if (Input.GetButtonDown("L1")) { //L1が押された場合
if (lockOn == false && locktarget){ //非ロックオン、かつターゲットがある場合
LockON(); //ロックオンする
}else{ //ロックオン中、もしくはターゲットがない場合
LockOFF(); //ロックオン解除する
}
}

if (lockOn == true){ //ロックオン中の場合

if (!locktarget){ //ロックターゲットがない場合
LockOFF(); //ロックオン解除する
}else{ //ロックターゲットがある場合
bulletSpawn.transform.LookAt(locktarget); //バスターの発射方向を敵の方にする
//y軸周りの角度を求めている
var dx = locktarget.position.x - playerObj.transform.position.x;
var dz = locktarget.position.z - playerObj.transform.position.z;
y = Mathf.Atan2(dx, dz) * Mathf.Rad2Deg;
//カメラ移動・回転
MoveCamera(0.0, y);
//ロックマークをロックターゲットの位置に移動し、カメラの方を向かせる
lockMark.transform.position = locktarget.position;
lockMark.transform.LookAt(normalCamera.transform);
}
}else{ //非ロックオンの場合
//入力をangleに代入
var angle : Vector3 = Vector3(Input.GetAxis("Right_X"), 0, Input.GetAxis("Right_Y"));
//入力量に応じて角度を加える
if (angle.magnitude > 0.1) {
y += Input.GetAxis("Right_X") * xspeed * 0.08;
x += Input.GetAxis("Right_Y") * yspeed * 0.01;
}
//上下の角度を制限する
x = ClampAngle(x , xMinLimit, xMaxLimit);
//カメラ移動・回転
MoveCamera(x, y);

}
}

//ロックオンする関数
function LockON()
{
lockOn = true; //ロックオン
//ロックマークをターゲットの位置にインスタンス化
lockMark = Instantiate(lockMarkPrefab, locktarget.position, transform.rotation);
}

//ロックオン解除する関数
function LockOFF()
{
lockOn = false; //ロックオン解除
Destroy (lockMark); //ロックマークを削除
//バスターの発射方向を正面に戻す
bulletSpawn.transform.localRotation.x = 0;
bulletSpawn.transform.localRotation.y = 0;
//正面を向く
x = 0.0;
}

//カメラ移動・回転の関数
function MoveCamera(x : float, y : float)
{
normalCamera.transform.rotation = Quaternion.Euler(x, y, 0);
normalCamera.transform.position = Quaternion.Euler(x, y, 0)
* Vector3(xDistance, yDistance, -zDistance) + playerObj.position;
}

//角度を制限する関数
static function ClampAngle (angle : float, min : float, max : float)
{
return Mathf.Clamp (angle, min, max);
}

モーションとAIに苦戦中

モーション作るのはなかなか難しいですね
でもそれ以上にAIが難しいかも・・・(;´д`)
コブンのときは本のやつをほぼそのまま使ってたので自分でちゃんとAIを作るのは初です
どんな感じにするつもりかまとめておきます

シャルクルスAI
・プレイヤーキャラクター(PC)が前方(60度くらい?)にいない場合はその場でPCの方へ向きを変える
・前方にPCがいて距離が離れているときは走って近づく(ホーミングあり)
・前方にPCがいて距離が近い場合は突き攻撃をする
 ※走ってきた勢いがある場合は攻撃しながら減速

作業量を減らしたいのでいろいろ削ってます(^^;)
平常時の振る舞いは無しで常に戦闘中!ジャンプもなし!
モーションは走り、足踏み(方向転換)、攻撃(攻撃後の隙↓を含む)、ダウンの4つだけの予定
シャルクルス隙
攻撃の判定の仕方もまだ決まってません。
参考書ではプログラムで攻撃の範囲を指定してますが
シャルクルスの場合は爪の部分に当たり判定をつけたほうがいいかも?
突き攻撃は連続ヒットするのでそこも考えないといけないです。
あとダメージをある程度受けるとダウンするのもありますね・・・頭が痛いです(ノД`)

まだゲーム全体でやること沢山あるからここだけで時間使いたくないんだけど・・・(・ω・`)
プロフィール

コブン0号

Author:コブン0号
開発中止になってしまったDASH3復活を願ってゲームを製作中です。
Unity, Blender, Illustrator, GIMP, Aviutl等を勉強中です。
ツイッター:https://twitter.com/KobunNo0
メール:jisaku.dash3(半角アットマーク)gmail.com

最新記事
最新コメント
最新トラックバック
月別アーカイブ
カテゴリ
検索フォーム
RSSリンクの表示
リンク
ブロとも申請フォーム

この人とブロともになる

QRコード
QR
上記広告は1ヶ月以上更新のないブログに表示されています。新しい記事を書くことで広告を消せます。