カーブ

フォーラム(掲示板)ルール
フォーラム(掲示板)ルールはこちら  ※コードを貼り付ける場合は [code][/code] で囲って下さい。詳しくはこちら
KEN

カーブ

#1

投稿記事 by KEN » 15年前

今自分は敵の動きでカーブの動きを作りたいのですがどうしたらいいか分かりません。
したいカーブのイメージをあげておきます

Y座標のみに値を足していきカーブするとX座標は同じで横にただついていくだけ、としたらいいのですが
それが良く理解できません。

ちなみに自分はサインカーブの動きも遣ってるのですが、これでただY軸を足したらいいだけと言われましたが
良く分からないです

//ヘッダー
#define RAD (3.141592f / 180.0f)//ラジアン値に変換


//cpp
  float Enemy::m_BaseWaveHeight = 1.0f; //振り幅基本角度

m_SinCurveHeight = 0.0f; //振り幅基本高さ

 //角度を足して一周期したら初期化
 if( ++m_Angle > 360.0f ){
 m_Angle = 0.0f;
 } 
  //サインカーブ
  m_SinCurveHeight = m_BaseWaveHeight *
(float)sin( 2.0f * m_Angle * RAD );

これをどうしたらいいか全く分かりません
どなたか知恵を貸して下さい
よろしくお願いします

画像

やっくん

Re:カーブ

#2

投稿記事 by やっくん » 15年前

>Y座標のみに値を足していきカーブするとX座標は同じで横にただついていくだけ
X座標は同じで横についていくだけとありますが、何について行くのでしょうか
自分のキャラクターが存在し、その動きに合わせて敵も着いてくるということでしょうか?
それとも単にY座標が変化しても敵は等速運動を続けるということでしょうか?

申し訳ないですが、ソースコードのどれがX座標とY座標を表しているのかがわかりませんので回答があいまいになりますが・・・

/* X座標 */
もし、自分の動かすキャラクターに合わせて敵が動くならば、
敵のX座標値に自分キャラのX座標値を代入。

等速運動をさせるならば、
ループさせるたびに敵のX座標値に定数値を加算してばいけば良いかと思います。

/* Y座標 */
敵Y座標値には変位分だけループごとに加算してあげればいいかとおもいます。

KEYONN_

Re:カーブ

#3

投稿記事 by KEYONN_ » 15年前

ネットカフェから書き込みです。

簡単なツールをC#かVBで作れば良いとおもいます。

マウスがドラッグしている時(マウスが押されていて、離されていない状態)の座標を
記憶しておき、テーブル化で動きを再現するという手法です。

昔はこの方法がよく使われていました。(ギャラクシアンなど)

こうすることで、いろんな敵の移動が再現できます。

ただし、描画角度は計算するのが少し難しいかもしれません。


int XTbl[60*15];//15秒間のX座標
int YTbl[60*15];//15秒間のY座標

Enemy.x=XTbl[framecounte[/url];
Enemy.y=YTbl[framecounte[/url];

framecounter++;

こんな感じですが、ツールを作るのが難しいなら、DXライブラリをつかえば良いと思います。
GetMousePoint(int *x,int *y);
GetMouseInput();
これらの関数でデバッグモードでバイナリファイルなり、テキストファイルに保存するのは
どうでしょうか?

パコネコ

Re:カーブ

#4

投稿記事 by パコネコ » 15年前

えーと…
ジャンプの軌道もカーブに近いですよね。

例で言うと
x=0;
y=0;
ax=10;
ay=0;
yuka=480;

while(y<yuka){//ループのかわりに床に達するまで
x+=ax;
y+=ay;

ay++;
描写
}
とか?
これはループ中、際限なくyの移動量が増えていきますけどね。
左上から右下に墜ちる感じです。
Xの移動量はわからないのでそのままにしました。

閉鎖

“C言語何でも質問掲示板” へ戻る