龍神録のパターン化できない
-
ahiru
龍神録のパターン化できない
僕が自分でパターンを作ろうとしていますが
パターン11として3次関数や2次関数をパターン化したいのですが?
わかりやすいように教えてくださいお願いします
パターン11として3次関数や2次関数をパターン化したいのですが?
わかりやすいように教えてくださいお願いします
- softya(ソフト屋)
- 副管理人
- 記事: 11677
- 登録日時: 15年前
- 住所: 東海地方
- 連絡を取る:
Re: 龍神録のパターン化できない
とっかかりとして一次関数でなら出来るのでしょうか?
by softya(ソフト屋) 方針:私は仕組み・考え方を理解して欲しいので直接的なコードを回答することはまれですので、すぐコードがほしい方はその旨をご明記下さい。私以外の方と交代したいと思います(代わりの方がいる保証は出来かねます)。
-
ahiru
Re: 龍神録のパターン化できない
1次関数はプログラムを作ることができるのですが、
2次関数が滑らかにプログラムできなくて困っています。
3次4次も同じで滑らかにができないのです。
2次関数が滑らかにプログラムできなくて困っています。
3次4次も同じで滑らかにができないのです。
- softya(ソフト屋)
- 副管理人
- 記事: 11677
- 登録日時: 15年前
- 住所: 東海地方
- 連絡を取る:
Re: 龍神録のパターン化できない
一次関数だと差分を足していく形になりますが、2次や3次関数だと毎回起点フレーム・座標からの位置を計算した方が簡単だと思います。
もし足していく形にするには2次や3次関数をフレーム時間で微分したものを加算する形になります。 → [更に訂正]いや、式としては微分ですね。
もし足していく形にするには2次や3次関数をフレーム時間で微分したものを加算する形になります。 → [更に訂正]いや、式としては微分ですね。
by softya(ソフト屋) 方針:私は仕組み・考え方を理解して欲しいので直接的なコードを回答することはまれですので、すぐコードがほしい方はその旨をご明記下さい。私以外の方と交代したいと思います(代わりの方がいる保証は出来かねます)。
- Dixq (管理人)
- 管理人
- 記事: 1662
- 登録日時: 15年前
- 住所: 北海道札幌市
- 連絡を取る:
Re: 龍神録のパターン化できない
それは
y=x^2
のような方程式の曲線を弾幕で表現したいということでしょうか?
それとも仕組み自体はできているが、計算結果が期待通りではないということでしょうか?
現在の仕組みだと大きく言えば
・飛ぶ方向
・飛ぶ速さ
で弾の飛びを決めています。
もし前者でお困りの場合でしたら、
x,y座標を自分で計算して代入したいなら、飛ぶ速さを0にし、
弾幕計算関数の中で座標を自分で代入するのが手っ取り早いかと思います。
もしきちんと作りたければ弾構造体に、弾の軌跡計算関数へのポインタを持たせて計算する等の手法が考えられるのではないでしょうか。
y=x^2
のような方程式の曲線を弾幕で表現したいということでしょうか?
それとも仕組み自体はできているが、計算結果が期待通りではないということでしょうか?
現在の仕組みだと大きく言えば
・飛ぶ方向
・飛ぶ速さ
で弾の飛びを決めています。
もし前者でお困りの場合でしたら、
x,y座標を自分で計算して代入したいなら、飛ぶ速さを0にし、
弾幕計算関数の中で座標を自分で代入するのが手っ取り早いかと思います。
もしきちんと作りたければ弾構造体に、弾の軌跡計算関数へのポインタを持たせて計算する等の手法が考えられるのではないでしょうか。
- softya(ソフト屋)
- 副管理人
- 記事: 11677
- 登録日時: 15年前
- 住所: 東海地方
- 連絡を取る:
Re: 龍神録のパターン化できない
元のコードを提示してもらえば問題点を指摘できますのでお願いします。
by softya(ソフト屋) 方針:私は仕組み・考え方を理解して欲しいので直接的なコードを回答することはまれですので、すぐコードがほしい方はその旨をご明記下さい。私以外の方と交代したいと思います(代わりの方がいる保証は出来かねます)。
-
ahiru
Re: 龍神録のパターン化できない
codeですが
enemy_act_pattern.cppについか
void enemy_pattern11(int i){
int t=enemy.cnt;
if(t==0) enemy.vy=4;
if(t==0) enemy.vx=0;
if(t==40) enemy.vy=2;
if(t==40) enemy.vx=1;
if(t==60) enemy.vy=-2;
if(t==60) enemy.vx=1;
if(t==80) enemy.vy=4;
if(t==80) enemy.vx=0;
}
enemy.cppに
extern void enemy_pattern11(int);
void (*enemy_pattern[ENEMY_PATTERN_MAX])(int)にenemy_pattern11,をついか
enemy_act_pattern.cppについか
void enemy_pattern11(int i){
int t=enemy.cnt;
if(t==0) enemy.vy=4;
if(t==0) enemy.vx=0;
if(t==40) enemy.vy=2;
if(t==40) enemy.vx=1;
if(t==60) enemy.vy=-2;
if(t==60) enemy.vx=1;
if(t==80) enemy.vy=4;
if(t==80) enemy.vx=0;
}
enemy.cppに
extern void enemy_pattern11(int);
void (*enemy_pattern[ENEMY_PATTERN_MAX])(int)にenemy_pattern11,をついか
- softya(ソフト屋)
- 副管理人
- 記事: 11677
- 登録日時: 15年前
- 住所: 東海地方
- 連絡を取る:
Re: 龍神録のパターン化できない
codeタグをご利用くださいね。 → http://dixq.net/board/board.html#k10
vxとvyは速度ですので2次関数の形で動かしたいならvxとvyはtを使った一次関数となります。
使いたい元々の2次関数式がわかりませんが、
x = a*t*t + b*t + c
だとするとこれを微分して
vx = 2*a*t + b
となります。
vxとvyは速度ですので2次関数の形で動かしたいならvxとvyはtを使った一次関数となります。
使いたい元々の2次関数式がわかりませんが、
x = a*t*t + b*t + c
だとするとこれを微分して
vx = 2*a*t + b
となります。
by softya(ソフト屋) 方針:私は仕組み・考え方を理解して欲しいので直接的なコードを回答することはまれですので、すぐコードがほしい方はその旨をご明記下さい。私以外の方と交代したいと思います(代わりの方がいる保証は出来かねます)。
-
ahiru
Re: 龍神録のパターン化できない
私中学生だから微分あまりよくわからない。
codeタグ未使用ごめんなさい。
vxの微分はわかりました。
が
じゃあ
vyの微分はどうなるのですか?
codeタグ未使用ごめんなさい。
vxの微分はわかりました。
が
じゃあ
vyの微分はどうなるのですか?
- softya(ソフト屋)
- 副管理人
- 記事: 11677
- 登録日時: 15年前
- 住所: 東海地方
- 連絡を取る:
Re: 龍神録のパターン化できない
使いたい2次関数とxとyの関係が分からないと答え様が無いです。ahiru さんが書きました:vyの微分はどうなるのですか?
私の書いた例も、あくまで例ですから。
by softya(ソフト屋) 方針:私は仕組み・考え方を理解して欲しいので直接的なコードを回答することはまれですので、すぐコードがほしい方はその旨をご明記下さい。私以外の方と交代したいと思います(代わりの方がいる保証は出来かねます)。
- Dixq (管理人)
- 管理人
- 記事: 1662
- 登録日時: 15年前
- 住所: 北海道札幌市
- 連絡を取る:
Re: 龍神録のパターン化できない
何をどう実現したいのかをもっと明確化してもらわないと答えられないです。
具体的にどのような軌跡を移動させたいのですか?
具体的にどのような軌跡を移動させたいのですか?
- softya(ソフト屋)
- 副管理人
- 記事: 11677
- 登録日時: 15年前
- 住所: 東海地方
- 連絡を取る:
Re: 龍神録のパターン化できない
画像が添付されていません。プレビューで確認してくださいね。
上手くできない場合は、何処かのアップローダサイトにでも上げて下さい。
数式でxとyの関係を書いてもらったほうが早いかも知れません。
上手くできない場合は、何処かのアップローダサイトにでも上げて下さい。
数式でxとyの関係を書いてもらったほうが早いかも知れません。
by softya(ソフト屋) 方針:私は仕組み・考え方を理解して欲しいので直接的なコードを回答することはまれですので、すぐコードがほしい方はその旨をご明記下さい。私以外の方と交代したいと思います(代わりの方がいる保証は出来かねます)。
- Dixq (管理人)
- 管理人
- 記事: 1662
- 登録日時: 15年前
- 住所: 北海道札幌市
- 連絡を取る:
Re: 龍神録のパターン化できない
投稿されたコメントの生データを見ましたが、URLがむちゃくちゃになっています。
画像はここのHPのユーザー登録を行ってもらえれば添付できるようになります。
mixc++への登録は画面右下のユーザー登録より行えます。
画像はここのHPのユーザー登録を行ってもらえれば添付できるようになります。
mixc++への登録は画面右下のユーザー登録より行えます。
- softya(ソフト屋)
- 副管理人
- 記事: 11677
- 登録日時: 15年前
- 住所: 東海地方
- 連絡を取る:
Re: 龍神録のパターン化できない
自機からの発射される弾の軌跡ではないのでイメージが湧きませんが、計算式そのものイメージが出来ていないということは分かりました。
x = a * t * t + b *t + c
y = d * t + e
で座標を計算すれば良いと思います。
cとeは発射座標。a,b,dはテストの上適当に決めて下さい。tはフレーム数です。
x = a * t * t + b *t + c
y = d * t + e
で座標を計算すれば良いと思います。
cとeは発射座標。a,b,dはテストの上適当に決めて下さい。tはフレーム数です。
by softya(ソフト屋) 方針:私は仕組み・考え方を理解して欲しいので直接的なコードを回答することはまれですので、すぐコードがほしい方はその旨をご明記下さい。私以外の方と交代したいと思います(代わりの方がいる保証は出来かねます)。