ゲームプログラミング相談室【Part5】
■ このスレッドは過去ログ倉庫に格納されています
0001名前は開発中のものです。
02/11/04 20:41ID:a1Mhmm8N扱う話題のダイナミックレンジはやや広め。包容力高め。
他の初心者質問スレとの棲み分けを探りつつ
これからもマターリと活用しておくれ。
■前スレ
【Part4】http://game.2ch.net/test/read.cgi/gamedev/1005040025/
■旧スレ(プログラム技術板)
【Part1】http://piza.2ch.net/tech/kako/969/969984472.html
【Part2】http://pc.2ch.net/tech/kako/985/985540361.html
【Part3】http://pc.2ch.net/tech/kako/1002/10028/1002894129.html
■関連スレなど
>>2-5
0147名前は開発中のものです。
03/01/04 19:19ID:b7FiLgbb手を抜きたければ配列ってのもあり。
static unsigned int enemys[] = {
1, 0, 0, 0, 0, 0, 1, // 0 frame目
0, 0, 0, 1, 0, 0, 2, // 60 frame目
0, 0, 0, 0, 0, 0, 2, // 120 frame目
..
};
1 行 60 frame 単位で処理して、出現座標の x 座標に対応したところに
敵出現情報を埋めておく。0 で敵なし, 1, 2, 3, .. が敵の種類とかさ。
少し凝った処理が必要(たとえば 30frame で出したい)とかになったら、
上位 24bit をパラメタとして敵出現関数に渡して、そっちで細かい処理
をさせる。
0148名前は開発中のものです。
03/01/04 19:25ID:Sa70MEqMキー入力とは関係ないが、
> これだとペンティアム4のハイパースレッド機能という奴を使わないといけないのでしょうか?
こんなことを言ってる様だと、擬似タスクの勉強からはじめろって言いたくなる
気持ちもわかるだろ。
それじゃあーハイパースレッド機能のないX68000では二人用のゲームは
作れないのか?と問いたくなるけど(w
>>141 はキー入力のことは一旦置いといて、ゲーム制作の基本中の基本を
解説しているサイトを検索して読み漁った方がいいかと思うけどね。
0149あぼーん
NGNG0150名前は開発中のものです。
03/01/04 20:57ID:iAU/RP0wゲームのメインループとキー入力の関係を教えた方が百倍為になる。
0151名前は開発中のものです。
03/01/04 21:19ID:tSU5Xw8/昔のようなハードウェアを 1 つのプログラムで占有できる環境なら
ポーリングさせれば良いんだが、今時の環境についてマジに理解しよ
うとすると、割り込みと OS 側の処理に関する知識が必須になる。
とりあえず「DirectInput では現在のキー入力状態を取得する API
が提供されてるから、それを使えば良い」ぐらいの理解で済ませてお
いて、細かい話は必要になるまで忘れといた方が幸せじゃないかね。
>>141 にちょい追加だが
mainloop()
{
キーボード入力状態のスナップショットを取得(); // 細かいことは Win32 にお任せ
一人目のキー処理();
二人目のキー処理();
時間を進める();
描画();
}
0152名前は開発中のものです。
03/01/04 21:31ID:mQYZkk6z0153148
03/01/04 21:41ID:Sa70MEqM> ゲームのメインループとキー入力の関係を教えた方が百倍為になる。
ハァ?何それ?・・・って感じですがなにか?
>>151
141のレベルを推測するとそこまで考える必要は全然ないと思われ。
そんなのは逆に知識ひけらかせてるだけにしか見えないが。
そもそも質問にマジレスするとなると、まずほとんどの二人用ゲームで
「同時に処理する必要はないし、厳密にはできない」だな。もちろんこれだけで
141がきちんと理解できるのか疑問だけど、それ以上のことは141自身が
言ってないので答えようがないな。
0154名前は開発中のものです。
03/01/04 21:59ID:tSU5Xw8/そもそも「同時」ってのが何を指してるのか考えないといかんよな。
>>141
現実世界だと時間は連続して流れてるわけだが、ゲームではふつー 1/60 秒なり
何なりの適当な間隔でゲームを進行させる。だから、入力を処理するのも「押し
たらすぐ」ではなくて、押したらそれを覚えておいて、次のゲーム進行のタイミ
ングで処理すれば良い。
…ってのがすべての基本かね。
0155名前は開発中のものです。
03/01/04 23:09ID:UD5seDi4なるにはどうしたらいいんだ!?
人生の先輩達よどうか教えておくれ・・・
0156名前は開発中のものです。
03/01/04 23:20ID:9YV/5Oa6マジレスすると、ゲーム以外のことを沢山勉強すべし。
0157名前は開発中のものです。
03/01/05 01:16ID:BX37WwrGあと数学と物理と英語。
0158名前は開発中のものです。
03/01/05 02:04ID:Y2P5Wwxzゲーム制作をさせてくれる会社に入りましょう
0159141
03/01/05 03:22ID:GM2t1dvX0160あぼーん
NGNG0161名前は開発中のものです。
03/01/05 07:23ID:cPL0Ma17プログラマになりたいなら、大学までプログラムは放って置いて
高校までに英語をネエティブ並みに話せる、書ける、読めるようになっておきたい。
俺が。
0162名前は開発中のものです。
03/01/05 20:39ID:XJftI3rc俺漏れも
0163名前は開発中のものです。
03/01/05 21:51ID:+ZilYbBVならんぞ。まぁ、英語も読むぐらいはできないと困るが。
0164名前は開発中のものです。
03/01/17 11:54ID:zxXu494p( ´∀`)< 糸冬 !!
/, つ
( ((_(_, )) )
しし'
0165名前は開発中のものです。
03/01/23 12:30ID:B/UbhrUo0166si
03/01/29 11:03ID:03M+lMkZC言語で希望です。
0167名前は開発中のものです。
03/01/29 13:57ID:2TLqok57http://www.vector.co.jp/soft/dos/game/se000996.html
0168あぼーん
NGNG0169名前は開発中のものです。
03/01/29 21:03ID:SdJpN0Xoちょっと疑問に思ったので質問させてください
たとえば、飛行機を表すタスクがあって、飛行機が移動しますね。
で、3Dのゲームだとカメラから描画の順番とか決めたりする処理がきて、で、そのあとに描画本体が来ますね。
とうぜん、飛行機の描画処理は飛行機タスク自体がおこなっていると思うのですが、ここで疑問が生じました。
飛行機タスクは、1フレームの中で優先順位が変わるたびにリストの中を移動しているのでしょうか?
それだとリスト中の位置を特定するのにいちいちサーチをしているのでしょうか?
それとも、「飛行機」を表す複数のそれぞれ優先順位の違うタスクで一つの「飛行機」を構成している?
それだとデータをどのように共有しているのでしょうか?
おしえてください。
0170名前は開発中のものです。
03/01/29 21:18ID:fBpSUHac>飛行機の描画処理は飛行機タスク自体がおこなっていると思うのですが
ダウト
0171名前は開発中のものです。
03/01/29 21:26ID:SdJpN0Xoそいでは、どうやって描画してるのでしょう?
飛行機描画関数に飛行機を渡しているのかな?
0172名前は開発中のものです。
03/01/29 21:36ID:SdJpN0Xo要するに、
1.タスクはリストの中を移動することがあるのですか?
Yes -> 2 / No -> 3
2.リストの中をどうやって移動するのですか?
3.そしたら(描画をするのが飛行機タスクじゃないにしても)どうやってタスク間で情報を共有していますか?
0173名前は開発中のものです。
03/01/29 23:11ID:KEqojg40移動するとか考える必要ないんじゃない?
あと、タスク間での情報の共有って? 各タスクから共通の関数呼べば済むのでは?
0174名前は開発中のものです。
03/01/30 00:37ID:L8+k5MAr描画をタスク自身が行うとは考えにくい。
タスクというレベルにまで到達しているなら、
「描画専門タスクに描画を依頼する」
という方式になっていると思う。
描画されるものとしての飛行機と、
アプリ内でのオブジェクトとしての飛行機を、
区別することが肝要だと思う。
0175名前は開発中のものです。
03/01/30 02:17ID:BqRtFvdb2方向リスト処理ですよね。この場合、私の質問は、STLで書いちゃうと
std::list<task *> tasklist;
tasklist.remove(this);
tasklist.insert(newpoint, this);
の newpoint の位置をどうやってチェックしてるんですか?っていう意味だったのです。
listの先頭から全部なめていくのかなー・・・、それとも別の頭いいやり方があるのかな〜と。
情報の共有というのは、もし飛行機が
struct 飛行機 {
actor * a1, * a2;
}
で構成されるものだとして、a2 はどうやって a1 の中の変更した情報をチェックするのだろーとか考えてました。
いちいち new 飛行機 とかすると、(速度的な面で)疑似タスク使ってる意味がありませんよね?
>>174
なるほどです。
描画されるものとしての飛行機っていうのは、単純に飛行機のスプライトとか3Dモデルとかでいいですか?
0176名前は開発中のものです。
03/01/30 02:20ID:ZJQj5onMそのページの概念は処理順が安定している内部処理に絞られた物なので、
描画には向かないです。つーか勝手に用語用法決められても(汗
描画系で言ったら、
フレーム毎に「TCBアドレス+カメラ距離のセット」のリストを作成し、
距離基準にソーティングした後、リストを順になめて描画をする
様な処理が必要です。(実際にはマルチパスレンダやらなにやらで、優先度
の基準は色々追加されていく)
0177名前は開発中のものです。
03/01/30 02:26ID:BqRtFvdb「飛行機作るときに、a1 に a2 へのポインタかませば良いんじゃないの?」
っていうのは、飛行機を構成する疑似タスクがたくさんになってくると、メモリ領域の中身が
ポインタだけで埋まっちゃう・・・とか思ったので、使わないんじゃないかなとおもいました。
0179デフォルトの名無しさん
03/01/30 03:38ID:dIfJNfqdnewpointの位置
「ここから先は敵タスク」みたいな目印用のタスクを何個か加えて、
それのポインタをグローバルで持たせてる。
それ使って大雑把にサーチした後に細かく見てる感じでやってるけど… 他に良い方法あるのかな
情報の共有
基本的に、子が親のポインタを持つのみ。
親から子に何かさせたい時は、親が自分のフラグを変えて、子がそれを見に行く。
子同士で何かさせたい時は、子が親のフラグを変えて、他の子がそれを見に行く。
補足
タスクの移動は、タスクを管理している側で操作したほうがいいと思う。
自分で移動するとnextが変わっちゃうので、他タスクがスキップされたり2回処理されてしまう。
情報の共有は、親は自分が参照されているかどうか、調べる必要があるかも。
子が持っているポインタが開放されたタスクを指していることがないように。
0180>>169
03/01/30 03:47ID:Lo8nF9w1「3D描画エンジン(仮名)」というような割合高機能なクラス(もしくは関数群)を作って、
それに描画を依頼する形で考えると良いのでは。
1.各物体オブジェクト(タスク)は、「3D描画エンジン」に指定位置での指定3Dモデルの
描画を依頼する。
2.「3D描画エンジン」は、それらの情報(位置、方向+モデル)を総合してソートなどして
描画順などを決め、一気に描画する。
つまり、描画順は各物体オブジェクト(タスク)にとっては知ったこっちゃねぇと。
描画エンジンが面倒みてくれるよと。こゆわけです。
だから描画順によってリストを移動などしなくて良いのです。
0181名前は開発中のものです。
03/01/30 07:34ID:xfHNFz6rタスクは結局ステートを変更するだけに過ぎない。
0182171
03/01/30 13:02ID:BqRtFvdb>情報の共有
子同士で何かするときのイメージなんだけど、親を掲示板に見なして、
A「なんかすっぜ」
B「おー」
B「おれはやったぜ」
A「そかりょかーい」
B「うぃ」
みたいな感じでいいのかな?
タスクの移動に関して「nextが変わっちゃう」問題は、タスクを取ってきたときに
nextを保存しておくのはダメですか?
>>180
なるほどです。
0183名前は開発中のものです。
03/01/30 14:45ID:U9i8fY1r俺は、ポインタに1クッションおく「ハンドル」を使ってる。
Windowsのウインドウハンドル(HWND)なんかと概念は同じ。
ポインタを直接持たずに、ハンドルからポインタを得る。
安全だけど、面倒くさい。
参考URL
http://www2.tky.3web.ne.jp/~yosshin/memo/000213.html
0184あぼーん
NGNG0185名前は開発中のものです。
03/01/30 21:45ID:L8+k5MAr破滅的な状態を回避するには有効だと思う。
0186名前は開発中のものです。
03/01/31 10:15ID:6VWpyBYm0187名前は開発中のものです。
03/01/31 11:35ID:4bR+Vd+qCGIはサーバ&クライアントの関係を用いて
データのやり取りとりを行いデータの読み出しや書き込みをしていますよね?
ではGAMEではどのようにしてセーブをおこなったりしているのですか?
ゲームボーイやファミコンの本体にサーバとクライアントの機能が
備わっているとは思えないのですが…。
どのような仕組みで保存(セーブ)をしているのでしょか?
0188名前は開発中のものです。
03/01/31 11:37ID:6ynLwhZoGAMEって例えば?
0189名前は開発中のものです。
03/01/31 11:40ID:4bR+Vd+qドラクエでもなんでもデータセーブ機能がついているゲーム。
サーバ&クライアントの関係を使わないとしたら
どのようにして保存をするのですか?
どのような言語で書かれたプログラムを使うのかとかおしえてください。
あとできればその理論が知りたいです。
0190名前は開発中のものです。
03/01/31 11:40ID:H1fkys7Oマルチうぜぇ
消えろ
0191名前は開発中のものです。
03/01/31 11:41ID:NYWMKE8k0192名前は開発中のものです。
03/01/31 11:45ID:4bR+Vd+qこの時間では書込みが少ないと思いマルチにしてしまいました。
おしえてください。。。
0193名前は開発中のものです。
03/01/31 11:50ID:Oks/Mlfbそのような abuse 行為は善意に支えられたネットワークにとって
最大の敵であることを知りなさい。
恥知らず。
0194名前は開発中のものです。
03/01/31 11:57ID:yMAewiuoそれも一度や二度ではなく。URLなんか覚えてないけどね。
ただし、質問者がマルチポストした先の答えをまとめて、
全ての回答者にこれこれこーなりました、ありがとーと言って回るならばっておまけ付き。
0195名前は開発中のものです。
03/01/31 12:07ID:Q0GDcsquなんでサーバ・クライアントの話が出てくるのか分からないんだけども
0196名前は開発中のものです。
03/01/31 12:46ID:yMAewiuoんっとさー、おーざっぱに答えるから嘘ついてるかもだよ。
コンピューターっていうのは CPU と メモリ とそれらをつなぐバスっていうのが最低限の要素なんだよね。
ファミコンっていうのは、メモリをつけてないコンピュータを売りつけて、
遊ぶためにはメモリ(ROMカセット)を買ってくださいって仕組みだったんだよ。
で、ROMカセットの中に RAM も入れて、電池で連続起動しておけばセーブシステムのいっちょあがり。
0197名前は開発中のものです。
03/01/31 13:30ID:nYsHWhwS0198あぼーん
NGNG0199名前は開発中のものです。
03/01/31 19:18ID:qsXaXa9vGame Programming Gems以外に何か参考になる図書はありませんでしょうか?
よろしくお願いします。
0200416 ◆quHoSW/FCI
03/01/31 19:49ID:2OuKlzSK認識がヘン。
CGIやネットゲームのようなサーバ&クライアントの関係がある環境でも、
それは単に、サーバ側にデータを保存させているか、クライアント側に保存させて
いるかの設定の違いに過ぎない(CGIやとクラ側保存は・・・クッキーがあるか)。
データ保存が可能な環境と、保存命令があれば可能。サーバ&クライアントの
関係はぜんぜん関係無い。
0201名前は開発中のものです。
03/01/31 21:13ID:2op7A3hN限定的な環境でちょこっとかじっただけなんでしょ。
一生懸命説明しても無駄だと思う。
0202名前は開発中のものです。
03/01/31 22:13ID:2ZzIvraxずっとその例示を引きずるのは頭悪いな
0203名前は開発中のものです。
03/01/31 23:02ID:vCqXldk60204名前は開発中のものです。
03/01/31 23:36ID:qsXaXa9vインベーダーゲームみたいな2Dの簡単なソフトです。主にシューティングを中心に作りたいです。
0205名前は開発中のものです。
03/01/31 23:51ID:B3NC8eT4ゲームプログラミング遊びのレシピ―アルゴリズムとデータ構造
http://www.cmagazine.jp/books/recipe/
http://www.amazon.co.jp/exec/obidos/ASIN/4797316535/ref=pd_bxgy_text_1/t/249-7245941-5470719
は、どーでしょうか。
本屋さんでよく見かけるので、立ち読みしやすいと思う。
C++Builder&Delphiなのでそのままでは使いにくいけど、
日本語での解説部分はアルゴリズムの参考にはなるかと。
0206名前は開発中のものです。
03/02/01 00:33ID:JG1cEAZ6ありがとうございます。参考になりました。
0207あぼーん
NGNG0208名前は開発中のものです。
03/02/02 16:57ID:6i0/vwvmまずどのようなものを勉強すればいいのでしょうか。
キーワードとかってあります?
0209名前は開発中のものです。
03/02/02 17:02ID:9DYxK8loどうもイメージ沸かない・・・
0210名前は開発中のものです。
03/02/02 17:05ID:fhT0wplm階層構造,ローカル座標系
IK,FK
ここまでは3Dでもいっしょ
2Dなら画像の回転も必要かな
0211名前は開発中のものです。
03/02/02 17:11ID:zcwy9VYW手足にそれぞれ黒い棒がついてて、関節がおかしな方向に平気で曲がる紙人形。
0212名前は開発中のものです。
03/02/02 17:12ID:zcwy9VYW「多関節キャラによる格闘ゲームを作るスレ」その2
http://pc2.2ch.net/test/read.cgi/gamedev/1015771528/l50
0213名前は開発中のものです。
03/02/02 19:02ID:DGXzuX3G0214名前は開発中のものです。
03/02/02 19:32ID:t6/9t4TG0215名前は開発中のものです。
03/02/02 19:59ID:DGXzuX3G0216名前は開発中のものです。
03/02/02 23:29ID:ngVInDbvFK(フォワードキネマティクス)の方が簡単だから
IKよりFKをやってみては?
0217名前は開発中のものです。
03/02/03 07:46ID:JqqWIodKB宗(v += a)な私には、フレーム処理を 5ms 毎に実行して、それを V-Sync で描画するぐらいしか想像がつかないんだけどー。
0218名前は開発中のものです。
03/02/03 08:53ID:0/huq5OJリフレッシュレートに関する論争
http://matsuzak.pobox.ne.jp/directx/faq/refresh-rate.html
0219あぼーん
NGNG0220名前は開発中のものです。
03/02/06 00:54ID:2WnqR6mARPGの主人公がマップ上を歩くときに、手足が動いたりするのですが、
タイマーをかけて、stateを1,2,3,4,1,2,...って変えていって、
stateの値ごとに描画を変えるのがいいですか?
それだと、アニメーションが複雑になると、プログラムも汚くなるのですが、
もっと見やすくていい方法ってないですか?
0221名前は開発中のものです。
03/02/06 01:11ID:yacnI+6dアニメーションデータを表すデータ構造を作れ。
そしてそれを解釈して描画するプログラムを作れ。
これなら、アニメーションが複雑になってもプログラムに影響は無いぞ。
さらに、アニメーションデータを編集するツールを作るともっといい。
0222あぼーん
NGNG0223名前は開発中のものです。
03/02/07 00:53ID:WYEzYilN>もっと見やすくていい方法ってないですか?
きちっとした設計できれいにコーディングをする
いやマジです
関数とか構造体とかクラスってわかります?
0224名前は開発中のものです。
03/02/08 23:35ID:B2NmrZjg状態遷移のクラスを作って、定期的にそいつから
アニメーションパターンの数字を取得するようにする。
描画するときは、その数値に対応した絵を表示させるだけ。
0225名前は開発中のものです。
03/02/08 23:49ID:He/KRUT1すいません。想像しづらいのですが、
クラスのインターフェースを書いてもらえますか?
0226名前は開発中のものです。
03/02/09 00:43ID:EKddfl4f甘えるなゴルァ
「有限状態オートマトン」で検索するか、
"Game Programming Gems 1" の 「3.1 有限状態マシンクラス」を読んでくれ。
(全然難しい内容ではないが、まあ、一応)
0227名前は開発中のものです。
03/02/09 00:45ID:yUWb7xod0228名前は開発中のものです。
03/02/09 01:09ID:gYbNlh+mttp://210.143.102.80/upload/source/d/0685.txt
0229あぼーん
NGNG0230名前は開発中のものです。
03/02/10 16:24ID:FAmepXpSフレームを飛ばさないのに、処理落ちするって、どういうことですか?
処理は落ちてないんじゃないですか?
0231ぽぷり
03/02/10 16:27ID:6VC5i/Ltあと2箇所に書き込んだマルチだが良かったら質問よろしく頼みます
いまFF4のパクリ作ってるんだけど戦闘の曲を.wmaで作った。
で、これをループでエンドレスで流すわけだが
そのまま初めのフレーズ(ダダダダ、ダダダダ・・・・)に戻ってしまう。
この曲は1分54秒まであるんだが
俺としては0:00から1:54まで流した後
ループは0:00からではなく00:53あたりからにしたい。
どうしたらいいかな?誰か賢い奴教えてくれ。
流れとしては・・・・
戦闘開始(音楽スタート)
0:00→1:54→0:53→1:54→0:53→・・・・・戦闘終了(音楽終了)
っていう感じにしたいです
0232デフォルトの名無しさん
03/02/10 16:28ID:sFeXOrcIキャラクターの移動などがズルッズルッと遅くなる。
これが処理落ちしているという状態。
時間内に処理が終わらないのを「落ち」といっているのでしょう。
この場合処理はとばしていません。
パソコンでよく見られるのが、処理が重いときに処理をスキップする
やつです。画面の更新がなめらかでなくなってカクカクして見えます。
0233あぼーん
NGNG0234あぼーん
NGNG0235名前は開発中のものです。
03/02/10 17:15ID:xlyrLNILDirectShowでも、DirectSoundでも、MCFでも、プログラム上で制御は可能だが…。
0236名前は開発中のものです。
03/02/10 17:25ID:VY6anJSfマルチウゼー
http://pc2.2ch.net/test/read.cgi/gamedev/1028183728/60
http://pc2.2ch.net/test/read.cgi/gamedev/1035601681/922
0237ぽぷり
03/02/10 20:03ID:6VC5i/LtHSPでは無理かな?
プログラム上の制御って、どんな項目で検索したらいいでしょうか?
0238名前は開発中のものです。
03/02/10 21:04ID:pyEAMejp処理落ちとコマ落ちについても >>218 のリンク先に
書いてるから読んでみ。
0239名前は開発中のものです。
03/02/10 22:04ID:n899aQqE>>235が十分なくらいキーワードだしてるよ。
MCI(MCFは間違いだよな?)、DirectSound、DirectShow
HSPはよく知らないが、
MCIはWindowsAPI、DirectSound、DirectShowはCOMが扱えれば大丈夫。
HSPがそれらを扱うのが難しい言語ならば、
他の人が作ったライブラリを使う手もある。
# HSPといえどもDLLぐらい使えるだろ?
0240名前は開発中のものです。
03/02/10 22:09ID:n899aQqEこんな方法もあるようだ。
http://www.google.co.jp/search?hl=ja&inlang=ja&ie=Shift_JIS&q=HSP+DirectShow+%83%8B%81%5B%83v%95%94%8D%C4%90%B6&lr=
0241名前は開発中のものです。
03/02/10 23:15ID:+EgLsXBkマジで氏んでくれ。
0242235
03/02/11 00:32ID:OEwInXkJ何やってんだ、俺。
0243名前は開発中のものです。
03/03/02 11:58ID:1UsFLoT70244名前は開発中のものです。
03/03/04 22:15ID:QU9Qm2YP雰囲気としては一度敵機の近くでゆっくり動き、目標に向かって
早い曲線を描こうと思っています。おそらくゆっくり部分と狙撃部分の
2つのルーチンを使用するかとおもいますが、問題が2つほどありまして、
1)曲線が目標位置によってイビツになる。
2)レーザー表現を座標引き渡しで20個ほど丸オブジェクトを使用
したので、処理が遅い。
何か良い方法はないのでしょうか?
0245名前は開発中のものです。
03/03/08 01:35ID:AeESF41/座標を四十五度回転させてから上下半分に潰して表示している為に、見た目上上下の移動が遅く、左右の移動が早く見えてしまいます。
こういう場合、みなさんどうしていますか?
0246デフォルトの名無しさん
03/03/08 01:52ID:omw6bur7遅レスだけど。
1)
float f = atan2(目標とのyの差, 目標とのxの差) - (現在の進行方向);
while (f<-3.14) f += 3.14*2;
while (f>3.14) f -= 3.14*2;
(新たな進行方向) = (現在の進行方向) + f*(曲がり具合0.0〜1.0);
とかやってみる。符号とか間違ってるかも。
よく状況がわからないけど、変化量が急に変わらないようにすればいいんじゃないかな。
2)
直線で繋ぐとか。
■ このスレッドは過去ログ倉庫に格納されています