ベジェ曲線ショット

クロ GIF画像なのですが、再生できるかどうか不安です…
ショットの動きを増やしてみました
まだまだ微調整は必要ですけどね
GIF画像の内容は
発射した弾が外回りするような感じで飛んで行く感じよ
弾幕シューティングのホーミングショットに近いわね
霊夢
魔理沙 と言っても動きだけで
処理はほぼ直線に飛ばすショットと変えてないんだよな
ちょこっと変更するだけでこんな感じになるから面白いな
ということで、この曲線ショットのプログラムを
メモ程度にブログに残しておきます
くわしくは「続きを読む」からどうぞ!
妖夢

クロ ということで、こいつの作り方ですが
ベジェ曲線って言う仕組みを使ってます
Photoshopを触っている人にはおなじみなのかもしれませんね

ベジェ曲線とは
Nこの制御点から得られるN-1次曲線である
ってことよ
霊夢
魔理沙 と言葉で説明されてもわからんってやつだな
始点と終点の曲線に対して力を加えて曲線を表現する
って言ったほうが分かりやすいかな
乱暴な言い方になりますが
直線を引っ張ると曲線が出来るという性質を使った曲線の表現方法ですね
真円というより、曲線を作るのに向いてます
妖夢
クロ なんで曲げた起動にするかというと
単純にかっこいいからデス
横から的に迫る弾道のほうが迫力ありますからね

Unityな日々(Unity Geek)さん【ベジェ曲線にそってオブジェクトを動かす】

プログラムは
上のサイトさんを参考にしたわ
このプログラムだけでも十分動くのでほぼ解説する必要は無いかもね
霊夢
//===================================================================
/// 
/// 初期化
/// 
/// 第1制御点
/// 第2制御点
/// 第3制御点
/// 第4制御点
/// 弾速
/// プレイヤーの攻撃かどうか
/// みょん力(ショット攻撃力)
public void Init(Vector3 v0, Vector3 v1, Vector3 v2, Vector3 v3, float velcity, bool shotTypePlayer, int MAT)
{
//初期位置を設定
mVelcity = velcity;
mShotTypePlayer = shotTypePlayer;
this.transform.position = v0;
this.p0 = v0;
this.p1 = v1;
this.p2 = v2;
this.p3 = v3;
//距離を求める(こちらは各制御店の直線距離
Distance = Vector3.Distance(v0, v1);
Distance += Vector3.Distance(v1, v2);
Distance += Vector3.Distance(v2, v3);
}
魔理沙 変更点一つ目だ
GameObjectで使えるようにinit関数で制御出来るようにしたぞ
あとはゲームに合わせて必要なデータを取得出来るようにした感じだ
//===================================================================
/// 
/// 更新
/// 
void Update()
{
//発射元との距離を計算して反射範囲何の場合は処理をつつける
if (MovingDistance < 1.0f)
{
//ありえない速度は除外する
if (mVelcity <= 0)
{
return;
}
if (mVelcity > Distance)
{
return;
}
//進んだ距離を0~1の間で表現する
float time = MovingDistance + (mVelcity / Distance);
if (time > 1.0f)
{
time = 1.0f;
}
MovingDistance = time;
GetPointAtTime(MovingDistance);
}
else
{
//範囲外になったので削除
Destroy(this.gameObject);
}
}
あと、時間経過(0~1の比率計算)だったものを
速度計算で出来るように調整しました
小学校で習った「きはじ」を使ってます
妖夢
クロ この程度ですが今のところ動いているようです
ショットが外に行き過ぎてほとんど見えないので
その調整を行おうと思っています

気軽にコメントをどうぞ!

この記事に関すること冬月に聞きたいこと等、小さいことでもコメントしていただける嬉しいです。
冬月に直接連絡したい方は下のお問合せフォームをお使いください。(メール送信されます)

内容に問題なければ、下記の「コメントを送信する」ボタンを押してください。
※メールアドレスは公開されることは有りません。


The reCAPTCHA verification period has expired. Please reload the page.

ゲーム製作の関連記事