円状に動いている物体に乗る処理

フォーラム(掲示板)ルール
フォーラム(掲示板)ルールはこちら  ※コードを貼り付ける場合は [code][/code] で囲って下さい。詳しくはこちら
AliceCoder
記事: 51
登録日時: 7年前

円状に動いている物体に乗る処理

#1

投稿記事 by AliceCoder » 7年前

環境windows7 64bit
VC++2010

C++でアクションゲームを作っているのですが
自キャラが、円状に動いている物体の上に乗っているときの処理がうまくできません
円状に動く物体の処理は以下のようにできたのですが

コード:

//circle.x, circle.y, object.x, object.yはfloat型
circle.x = cos(kaku*M_PI/180)*speed;
circle.y = sin(kaku*M_PI/180)*speed;
//start_x, start_yを基準に回っている(start_x, start_yは定数)
object.x = start_x + circle.x;
object.y = start_y + circle.y;
//追記
kaku++;
if(kaku >= 360){ kaku = 0;}
円状に動く物体は決まった動きなのでこれでいいのですが
ユーザーが操作できる自キャラを乗せて円状に動くとなると、自キャラの座標をどうすればいいのかわかりません
動く物体とまったく同じ動きで円状に動くことはできたんですが、乗った位置にかかわらずまったく同じ動きにしかなりません(物体の端に乗ってたら自キャラの軌跡円がでかくなるはず)
三角関数は完璧には理解していないので優しく教えてくださると助かります
説明下手だったのでいろいろつっこんでくれてかまいません
角度変数の処理忘れてました追記しました

ISLe
記事: 2645
登録日時: 9年前
連絡を取る:

Re: 円状に動いている物体に乗る処理

#2

投稿記事 by ISLe » 7年前

円状に動く物体自身も回転していなければ自キャラの軌跡の円は大きくならないのでは。
質問者さんが思っているようにするには自転と公転の2つの計算が必要です。

あと自キャラが円状に動く物体に載っている状態をフラグなどで記録して、載っているときは差分を自キャラに加算する形にすることをお勧めします。

AliceCoder
記事: 51
登録日時: 7年前

Re: 円状に動いている物体に乗る処理

#3

投稿記事 by AliceCoder » 7年前

回答ありがとうございます
差分を加算する方法で作ってみます

AliceCoder
記事: 51
登録日時: 7年前

Re: 円状に動いている物体に乗る処理

#4

投稿記事 by AliceCoder » 7年前

差分を加算で簡単にできました。ありがとうございます

コード:

//物体移動前座標を保存
float sa_x = object.x;
float sa_y = object.y;
//物体座標移動
circle.x = cos(kaku*M_PI/180)*speed;
circle.y = sin(kaku*M_PI/180)*speed;
object.x = start_x + circle.x;
object.y = start_y + circle.y;
//物体移動後との差求める
sa_x = object.x - sa_x;
sa_y = object.y - sa_y;
//自キャラが乗ってたら移動させる
if(ride_flg){
    player.x += sa_x;
    player.y += sa_y;
}
//角度変更
kaku++;
if(kaku >= 360){ kaku = 0;}

閉鎖

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