タスクシステム総合スレ part5at GAMEDEVタスクシステム総合スレ part5 - 暇つぶし2ch■コピペモード□スレを通常表示□オプションモード□このスレッドのURL■項目テキスト549:名前は開発中のものです。 09/03/04 09:09:02 m+X+Qg7j >>546 > たとえばこのコード、複数の Star インスタンスの m_vx, m_vy を同時に読み書きしている。 その言い方は不正確だし、並列化の本質をわかっていない。 そのコード、そもそも元コードがすこしおかしいのだが、タスクシステムを使おうと使うまいと Starオブジェクトの集合から任意の2体を取り出して、その振る舞いを書きたいとする。 foreach(var star1 , star2 in stars) { star1.m_vx = star1.m_vx*star1.m_m/(star1.m_m+Star2.m_m) + Star2.m_vx*Star2.m_m/(star1.m_m+Star2.m_m); star1.m_vy = star1.m_vy*star1.m_m/(star1.m_m+Star2.m_m) + Star2.m_vy*Star2.m_m/(star1.m_m+Star2.m_m); } } これは、次のようにかきかえる。 foreach(var star1 , star2 in stars) { star1.m_vx_new = star1.m_vx*star1.m_m/(star1.m_m+Star2.m_m) + Star2.m_vx*Star2.m_m/(star1.m_m+Star2.m_m); star1.m_vy_new = star1.m_vy*star1.m_m/(star1.m_m+Star2.m_m) + Star2.m_vy*Star2.m_m/(star1.m_m+Star2.m_m); } foreach(var star in stars) { star1.m_vx = star1.m_vx_new; star1.m_vy = star1.m_vx_new; } これは、コリジョン判定とそれに対するアクションを切り離すときもそう。 これをきちんと切り離しておかないと並列化できない。 前スレでコリジョン判定は並列化できないとか言ってた馬鹿がいたけど、アクションを切り離さないから出来ない。 次ページ最新レス表示レスジャンプ類似スレ一覧スレッドの検索話題のニュースおまかせリストオプションしおりを挟むスレッドに書込スレッドの一覧暇つぶし2ch