2012年04月22日

【番外編】そろばんの練習問題を作るコンテンツ

サイト「ミナモハモン」にはゲームやインタラクティブ作品を公開しています。今回は番外編として少しマニアック(?)なコンテンツをアップしました。このコンテンツは、2ケタ〜13ケタの計算式をランダムな数字で作って、解答も表示します。
そろばん練習問題作成機」はこちらです。

詳しくはこちらをクリックしてください

posted by マシモ ユタカ at 22:00| Comment(0) | TrackBack(0) | ミナモハモン

2012年02月29日

【お知らせ】トランポリンのゲーム「サーカス」

サイトに新しいゲームをアップしました。気軽に楽しめるゲームになっていると思います。おどけたピエロが、さまざまなアクションをしてみせます。
ゲーム「サーカス」はこちらです。
ピエロ(クラウン)をトランポリンで跳ね返すゲーム「サーカス」


続きを読む

posted by マシモ ユタカ at 15:50| Comment(0) | TrackBack(0) | ミナモハモン

2012年01月18日

【お知らせ】宝石の万華鏡コンテンツ

以前作った「万華鏡」のフラッシュ・コンテンツをリニューアルしました。
以前は簡単な図形を使っていたのですが、キラキラと輝く「宝石」のモチーフに変更しています。
操作は簡単ですので、もしよろしければ一度さわってみてください。コンテンツ「宝石の万華鏡」はこちらです。
宝石の万華鏡


続きを読む



posted by マシモ ユタカ at 22:26| Comment(0) | TrackBack(0) | ミナモハモン

2011年12月21日

【お知らせ】無重力空間のビリヤードゲーム

私のサイトに新しいゲームをアップしました。宇宙空間でビリヤードををします。
ゲーム「ビリヤード-ゼロG」はこちらです。
ビリヤードゲーム

ビリヤードのやりかた   無重力ビリヤード

続きを読む

posted by マシモ ユタカ at 14:34| Comment(0) | TrackBack(0) | ミナモハモン

2011年11月21日

【お知らせ】打ち上げ花火のコンテンツ

私のサイトに新たなコンテンツを付け加えました。
いろいろな風景写真の上で「打ち上げ花火」を合成シミュレートするコンテンツです。クリックした場所で、花火がはじける趣向になっています。

コンテンツ「打ち上げ花火」はこちらです。

打ち上げ花火のコンテンツ


続きを読む

posted by マシモ ユタカ at 13:35| Comment(0) | TrackBack(0) | ミナモハモン

2011年11月09日

【お知らせ】鏡を使ったレーザー光線パズルゲーム

私のサイト「ミナモハモン」に、新しいゲームをアップしました。鏡の反射を予測して敵をやっつけるパズルゲームです。
ゲーム「反射レーザー」はこちらです。
反射レーザー砲ゲーム

続きを読む

posted by マシモ ユタカ at 16:18| Comment(0) | TrackBack(0) | ミナモハモン

2011年10月03日

【お知らせ】水辺の「ほたる」のコンテンツ

新しくゲームを作りました。「ほたるがり」をテーマにしたコンテンツです。ちょっとしたゲームになっていますが、雰囲気を楽しんでもらうことのほうをメインにしています。
ゲーム「ほたるがり」はこちらです。
ミニゲーム「蛍狩り」

くわしくはこちらをクリック下さい


posted by マシモ ユタカ at 22:25| Comment(0) | TrackBack(0) | ミナモハモン

2011年02月28日

【お知らせ】バスケットボールのゲーム

バスケットボールの、気楽に遊べるゲーム「フリースロー」をアップしました。もし気が向いたら触ってみてください。こちらです。
ストリート・ボールのゲームFree Throw






興味がおありの方は、こちらをクリックください。ゲームの解説します。


posted by マシモ ユタカ at 10:21| Comment(0) | TrackBack(0) | ミナモハモン

2011年02月14日

【お知らせ】メカニカルなゲーム

シルバー・ミラーに光るSFチックなゲーム『MECHANIKA(メカニカ)』を作りました。 ゲーム「メカニカ」はこちら
ブラウザゲームMECHANICA


興味のある方はこちらをクリックください。解説いたします。
posted by マシモ ユタカ at 23:21| Comment(0) | TrackBack(0) | ミナモハモン

2011年01月26日

【お知らせ】紙飛行機シミュレーションゲーム

私のサイトに、紙飛行機のコンテンツをアップしました。(コンテンツ「紙ひこうき」はこちらです。)
紙飛行機のシミュレーション
上下ボタンで操作して、できるだけ遠くまで飛ばすゲームです。もし興味がありましたら、こちらをクリックください。解説します。
posted by マシモ ユタカ at 15:02| Comment(0) | TrackBack(0) | ミナモハモン

2010年11月15日

【お知らせ】みつばちのゲームを作りました

私はインタラクティブ・コンテンツ(ユーザーの操作に、絵が反応するコンテンツ)のサイトを運営しています。本日そこに新しいゲームをアップしました。ミツバチを題材にしたゲームです。
(ゲーム「ハニービー」はこちら
ゲーム「ハニービー」

もし、興味があったらこちらをクリックください(ゲームの解説をします)



posted by マシモ ユタカ at 08:27| Comment(11) | TrackBack(0) | ミナモハモン

2009年12月23日

メタリックなキューブを、シャボン玉のようにふくらませて空に飛ばす

新しいコンテンツを作りました。(リンクしています→「キューブ」
flying Cubes.gif
よく晴れた空に、キラキラと輝くキューブが次々と静かに登っていく、というコンテンツです。
コンテンツ上にマウスポインタをもっていって、マウスボタンを押しっぱなしにすると
ストローが出てきて、シャボン玉を膨らますように「キューブ」を膨らませることができます。


見たことがない、不思議な光景を作ってみたいな、と思いながら作業しました。
なんとなく不思議な気分を味わっていただければ幸いです。
posted by マシモ ユタカ at 16:05| Comment(0) | TrackBack(0) | ミナモハモン

2009年10月24日

数字パズルゲームを作りました

私が運営するサイト「ミナモハモン」に新たなゲームをアップしました。
カザス』と名付けました。
(ここをクリックすると、カザスのページに行けます)
kazus.jpg

あそび方---------------------
次々に落ちてくる数字をクリックすると、
「ピョン」と左に飛んで「ピタッ」と棒グラフになります。
グラフめがけて数字を飛ばすと、その数の分だけグラフが大きくなります。
3本のグラフの高さをそろえると得点となり、グラフがクリアされます。
いずれかのグラフが20を超えるとゲームオーバーとなります。


自分では「数字」という概念が「グラフ」という目に見える量に変化するところが面白いのではないかと思ってますが、皆さんはいかがでしょうか?
見た目は、ギリシャのパルテノン神殿をモデルに作りました。
ゲーム全体を「古代ギリシャの数学者が、数字を思い浮かべながら思索している」というイメージにしたかったからです。

ゲーム『カザス』


posted by マシモ ユタカ at 16:35| Comment(0) | TrackBack(0) | ミナモハモン

2009年07月20日

深海の光る生物のゲーム「シンカイ」

今日は海の日。
ということで、ちょうど海にちなんだゲームが出来上がったので紹介します。
深海の発光する生物をモチーフにしたゲーム、「シンカイ」です。(リンクしてます→シンカイ
luminous_jellyfish.jpg
深海には不思議な生物が沢山います。中でもきれいに発光する生物たちはなんとも幻想的です。
国立博物館で七色に光るクラゲの映像を見て、その印象が忘れられずに、少しずつ組み立てていったのがこのゲーム「シンカイ」です。

シンカイの遊び方
パソコンのキーボードの4方向の「矢印キー」で操作します。
七色に光る生物が主人公です。これを矢印キーで動かして、大きなクラゲがばらまいていく「青く光る玉」を一定数以上捕獲するとステージクリアとなります。ウニのようなトゲトゲの生物に3回刺されてしまうとゲームオーバーです。
ゲームと言ってもビジュアルや、たゆたう雰囲気を味わっていただくことを主眼にしています。
「FREE」は自由に泳ぎ回って楽しむためのモード、
「AOTO」は、勝手に操作されますので、眺めて楽しむ観賞モードです。


「ターミネーター」や「タイタニック」で有名な映画監督のジェームズ・キャメロンが、深海を舞台にした「アビス」という映画を撮っています。「アビス」は前半の緊迫したサスペンスもよくできていて、結末のカタストロフィが圧巻でした。劇中には、酸素を含んだ液体の中に、肺呼吸する陸の生物を封じ込めて呼吸させる、という当時の先進的な科学トピックも盛り込んであって刺激的でした。
今回作った「シンカイ」もこの映画の影響を受けています。大好きな映画です。




posted by マシモ ユタカ at 14:24| Comment(0) | TrackBack(0) | ミナモハモン

2009年07月06日

万華鏡(カレードスコープ)の妖しい魅力 -フラッシュ・コンテンツ-

万華鏡は、みなさんも何度か覗いたことがあるのではないでしょうか。
幾何学的な模様が動くのを眺めていると、なんだか時間の経つのも忘れて熱中してしまいます。
以前から、万華鏡を題材にしたコンテンツを作ってみたかったのですが、今回ひとつ出来上がったので紹介させていただきます。(リンクしています→コンテンツまんげきょう)コンテンツの上にマウスポインタを持っていくと、「スパナ」のアイコンが表示されます。ここをクリックすると、模様の動き方や色などを調節する事が出来ます。

万華鏡(カレイドスコープ)は、19世紀に英国の科学者が発明して特許を取ったのが最初らしいです。現在に至るまで多くの人に楽しまれ続けているというのは、いかにこの玩具が魅力的かを物語っています。
私は、先に試験管のようなガラス管がついたタイプの万華鏡が好きです。そのガラス管の中が透明なオイルのような液体で満たされていて、中に詰められているきれいな「素材」がゆらゆらゆっくり降りてきて、官能的な模様がゆったりと展開するのを楽しむ事ができます。
万華鏡の構造はおおまかにいって、鏡3枚と、模様を作る元の「素材」から作られています。万華鏡のコンテンツを作ってみて分かったのは、万華鏡は模様の元となる「素材」が、それこそ無数にチョイスできるため、ベストの素材選びがなかなか決まらない、ということでした。あまりにも自由度が高いため、無数に試作しないとその中でもいいものがわからないのです。万華鏡の世界がこれほど奥深いとは想像していませんでした。





posted by マシモ ユタカ at 00:12| Comment(0) | TrackBack(0) | ミナモハモン

2009年06月18日

木漏れ日(こもれび)はなぜ気持ちいい? 〜木洩れ日をシミュレート〜

komorebi_icom01.jpg
天気のいい日に木陰で過ごすと、すごく気分が休まります。一体何故でしょう。
それまでの環境を離れ、仕事や悩み事から一時的に解放されるから。
部屋の小さな空間から出て、解放された広い空間に移り、のびのびできるから。
陽の光を浴び、緑の香りが濃い新鮮な空気を吸い込むことで、リフレッシュされるから。
いろいろリラックスできる理由が考えられます。

本ブログでは今回、木陰にさしこむ「木漏れ日」に注目してみました。風にゆれる梢が作り出す「ゆらめく光」に、何か人の心を休める作用があるのではないかと思ったからです。
そこで木漏れ日をシミュレートするコンテンツをつくってみました。興味のある方はここをクリックしてみて下さい→「こもれび」
私はこれを見ていると何となく気分が落ち着く気がします。みなさんはいかがですか。





コンテンツ「こもれび」は、上のような葉のシルエットを、円が回転する周期で動かしています。
この動いている葉の影のかたまりのパーツを、コンテンツ「こもれび」では全部で19個使っています。
ちょっと物理的な話をしますと、コンテンツ「こもれび」のそれぞれのパーツは同じ周波数で動いていますが「振幅(振れ幅)」「周期の開始タイミング」「揺れの方向」が19個で若干異なるように設定してあります。
コンテンツ「こもれび」は、マウスポインタを動かすと右上に『スパナアイコン』が表示されます。ここをクリックすると葉の影の運動の仕方を調節する事ができるようになっています。
posted by マシモ ユタカ at 13:59| Comment(0) | TrackBack(0) | ミナモハモン

2009年06月08日

きれいな熱帯魚が泳ぐゲーム『アクア』

サイト「ミナモハモン」に新しいコンテンツを追加しました。リンクしてます→ゲーム『アクア』
aqua.jpg
マウスで熱帯魚を操作して、浮いてくるガラス球をよけるゲームです。

ゲームとは言っても、見た目のきれいさや、操作感の気持ち良さを重視したコンテンツです。
暑い日も、このゲームをしていると、水の中を泳ぎ回っているような気分になって、なんだか涼しくなるような、そんなゲームを目指しました。

ガラス球が衝突するさまは、以前ブログで書いたこの計算方法を使っています。






以前の記事「ビリヤード球の衝突の計算」はここをクリックして下さい

このゲームの絵はパッとできたのですが、球の動きがなかなか上手くいかずに、時間がかかってしまいました。
もし楽しんでいただければ、苦労がむくわれます。

ゲーム「アクア」


posted by マシモ ユタカ at 21:54| Comment(0) | TrackBack(0) | ミナモハモン

2009年05月01日

ビリヤード球の衝突の計算











以前、ビリヤードのコンテンツを作成しました。(コンテンツはこちら→ビリヤード)
現在、また球の衝突のシミュレーションを使うコンテンツを作っています。


サイト「ミナモハモン」のコンテンツは「フラッシュ」という動画作成ソフトで作っています。フラッシュでは、「アクションスクリプト」(ActionScript)というプログラム用の言語を使用します。コンテンツ「ビリヤード」は、球の衝突軌道の計算を、この「アクションスクリプト」で書いています。
ネットを見ていると「ジャバスクリプト」という言葉をよく目されるのではないでしょうか。ジャバスクリプトは、ホームページに必要不可欠なプログラム言語となっています。「アクションスクリプト」は、この「ジャバスクリプト」とほとんど同じものです。


ビリヤードゲームを作る時に、参考になりそうなページを探しました。しかし、ネット上でビリヤード球の衝突の物理的な解説をしたページが見つかりませんでした。(探し方が悪かったのかもしれませんが…)
しかたなく、自分で図を描きながら、必死に計算式を作りました。
今日は、その時使った方法を記録しておきたいと思います。
(球の衝突の考え方の基本を書きます。記述したActionScriptについてお知りになりたいというご要望があれば、今後そちらもアップしたいと思います。)





●平面上に、球Aと球Bがあるとします。球Aが、静止している球BにベクトルVで衝突した後の運動を計算します。(反発係数を1とします。また、球は同じ重さだと想定するので、ベクトルは「運動量」ではなく、単純に「速さ」として見てください。)
「ベクトル」とは、速さの「方向」を表すと同時に、その長さが「速さの度合い」を表しています。力学計算をする時に用います。
sphere-sphere_collision01.jpg

●衝突後の軌道は、「ベクトルV」を、「球Aの中心と球Bの中心を結ぶ線の方向」と「それと直角方向」に分解することで得られます。
sphere-sphere_collision01.jpg
球Bはどの方向から球Aが衝突したにせよ、球Aと球Bの中心を結んだ線の方向の力だけを受け取ることが出来ます。球Aと球Bの重心がそれぞれ中心にあり、それぞれを結んだ線の上にある「球表面同士の接触面」が垂直になるため、球Bは、互いの中心を結んだ線の方向の力を受け取るからです。そして球Bは、球同士の表面が平行になる、図示した「円の接線方向の力」は受け取ることができません。なので、初期ベクトルVの内、「線分AB方向」に分解された力が「球Bが受け取る力」になり、「線分ABと直角方向」に分解された力が「球Aに残る力」になります。ゆえに、初期ベクトルVをこの2方向のベクトルに分解してやれば、衝突後の運動が分かります。


●ベクトルの分解は、分解したい2方向からなる「平行四辺形」の中に、分解元のベクトルが「対角線」として収まるように作図することで得られます。
sphere-sphere_collision03.jpg
sphere-sphere_collision04.jpg
球同士の場合は、分解する角度が必ず直角になるので、図形は「長方形」となります。


●図のように初期ベクトルVは、球Aが受け取る「Va」と、球Bが受け取る「Vb」に分解されます。(VaとVbの速度は、初速Vの長さとの比率で分かります)
sphere-sphere_collision05.jpg


(※ActionScriptでは、座標の値から三角関数を多用して計算式を組み立てることになります。また、上の例では一方の球が静止していますが、両方の球が速度を持っている場合は、接触時に、全く逆方向の力を分解して計算し、両方向の分解結果をあわせる必要があります。)




この結果から、次のような「ビリヤード球の法則」が分かります。
(ビリヤードでは、棒〔キュー〕で突いてころがす球を手球〔でだま〕、それで狙う球を的球〔まとだま〕といいます。)
・衝突後の手球と的球の軌道は直角になる(正確に両球の中心を貫いた場合のみ、打つ前の両球と撃った後の両球が全て直線上に並ぶ)
・手球を的球にかするような角度で当てると、スピードはほとんど手球に残ることになり、的球はゆっくりにしか進まない
・逆に両球の中心を貫く線に近い角度で当てると、スピードはほとんど的球に移ってしまい、手球の衝突後のスピードが遅くなる







(↑この図の上にマウスポインタを合わせると、手球の打ち出し方向を操作できます)


この計算式を使って作ったコンテンツの記事はこちら







2010.04追記-----------------
衝突のActionScriptについて、参考に作ったファイルをアップしました。必要な方はこちらをクリックして、リンク先からファイルをダウンロードしてご利用ください。Flash Ver.8ファイルです。(拡張子が変化していたら、「 .fla 」に書き直してご利用ください。)・「基本パラメーター」レイヤーに書いてある「球の活動エリア」の数値を変えて打ち込めば、自由に設定しなおせます。






■■■■■■■トップに書くスクリプト■■■■■■■
ActionScript 2.0です


//基本パラメーター-----------------------------------------


//球のパラメーター
var ha01:Number = 30;//球の〔半〕径
var yobu:Number = 1;//〔余分〕接触後反応が起こらない所まで移動する距離

//球の活動エリア
var kabe_d:Number = 390;//壁反射のための極大値down
var kabe_u:Number = 10;//壁反射のための極小値up
var kabe_r:Number = 510;//壁反射のための極大値right
var kabe_l:Number = 10;//壁反射のための極小値left



//関数に使う変数-----------------------------------------
//giri
var k01:Number=0;

//bunka
var sokuV0:Number=0;
var sokuV1:Number=0;
var sokuV2:Number=0;
var kaku2:Number=0;
var kakuSA:Number=0;
var Vxs:Number=0;
var Vys:Number=0;
var Uxs:Number=0;
var Uys:Number=0;

//atari
var syustu1:Object=[0,0,0,0];
var syustu2:Object=[0,0,0,0];

//sesho
var dasu:Object=[0,0];
var dasu2:Object=[0,0,0,0];


//関数指定(function)-----------------------------------------

//球を進める
function susumu(W01) {
eval(W01)._x += eval(W01).xs;
eval(W01)._y += eval(W01).ys;
}

//ボールの壁の反射
function hansya(W01) {
//横方向(x方向)の運動
if (eval(W01)._x<(kabe_l+ha01)) {
eval(W01)._x = kabe_l+ha01;
eval(W01).xs *= -1;
}
if (eval(W01)._x>(kabe_r-ha01)) {
eval(W01)._x = (kabe_r-ha01);
eval(W01).xs *= -1;
}
//縦方向(y方向)の運動
if (eval(W01)._y<(kabe_u+ha01)) {
eval(W01)._y = kabe_u+ha01;
eval(W01).ys *= -1;
}
if (eval(W01)._y>(kabe_d-ha01)) {
eval(W01)._y = (kabe_d-ha01);
eval(W01).ys *= -1;
}
}



//当たった直後に接触判定の出ない場所に置き直す
function giri(Wx, Wy, Zx, Zy) {//自球と相手球の座標を入力
//それぞれの球の座標を入力、主体ボールの新たな座標を出力
k01 = Math.atan2(Wy-Zy, Wx-Zx);
return [(2*ha01+yobu)*Math.cos(k01)+Zx, (2*ha01+yobu)*Math.sin(k01)+Zy];//自球の新たな座標を出力
}



//衝突前の一方の球の速度ベクトルを衝突後の二つの球の速度ベクトルに分解
function bunka(Uxs,Uys,kaku1){//入力は自球のx速度,y速度,自球と相手球の角度
sokuV0=Math.sqrt(Uxs*Uxs+Uys*Uys);//速度(x速度とy速度の合成「対角線の長さ」)
kaku2=Math.atan2(Uys,Uxs);//自球進行方向
kakuSA=kaku2-kaku1;//「衝突後相手球の進行方向」に対する「自球衝突前進行方向」の角度の差
sokuV1=Math.abs(sokuV0*Math.cos(kakuSA));//衝突後の相手球の速度
sokuV2=Math.abs(sokuV0*Math.sin(kakuSA));//衝突後の自球の速度
Vxs=sokuV1*Math.cos(kaku1);//衝突後の相手球のx速度
Vys=sokuV1*Math.sin(kaku1);//衝突後の相手球のy速度

if(Math.sin(kakuSA)<0){
Uxs=sokuV2*Math.cos(kaku1-Math.PI/2);//衝突後の自球のx速度
Uys=sokuV2*Math.sin(kaku1-Math.PI/2);//衝突後の自球のy速度
}else{
Uxs=sokuV2*Math.cos(kaku1+Math.PI/2);//衝突後の自球のx速度
Uys=sokuV2*Math.sin(kaku1+Math.PI/2);//衝突後の自球のy速度
}
return[Uxs,Uys,Vxs,Vys];//出力:衝突後の自球のx速度、y速度、相手球のx速度、y速度
}


//衝突後の両球の運動を算出
function atari(Wxs, Wys, Zxs, Zys, kaku0, kaku00) {
//入力:自球xs、自球ys、相手球xs、相手球ys、自球と相手球の角度、相手球から自球への角度
syustu1=bunka(Wxs,Wys,kaku0);//衝突前の自球の速度を、衝突後の自球と相手球の速度に分解
syustu2=bunka(Zxs,Zys,kaku00);//衝突前の相手球の速度を、衝突後の自球と相手球の速度に分解
return [syustu1[0]+syustu2[2],syustu1[1]+syustu2[3], syustu1[2]+syustu2[0], syustu1[3]+syustu2[1]];
//両方の結果を合成
//出力:自球xs、自球ys、相手球xs、相手球ys


}


//接触判定、再配置→衝突後軌道計算
function sesho(W01, Z01) {
if ( eval(W01).hitTest(eval(Z01)._x, eval(Z01)._y, 1)) {
//球を、接触判定が起こらない距離に置き直す
dasu = giri(eval(W01)._x, eval(W01)._y, eval(Z01)._x, eval(Z01)._y);
eval(W01)._x = dasu[0];
eval(W01)._y = dasu[1];
//衝突後の速度を出す
dasu2 =
atari(eval(W01).xs, eval(W01).ys, eval(Z01).xs, eval(Z01).ys,
Math.atan2((eval(Z01)._y-eval(W01)._y), (eval(Z01)._x-eval(W01)._x)),
Math.atan2((eval(W01)._y-eval(Z01)._y), (eval(W01)._x-eval(Z01)._x)));
eval(W01).xs = dasu2[0];
eval(W01).ys = dasu2[1];
eval(Z01).xs = dasu2[2];
eval(Z01).ys = dasu2[3];

}
}



//フレーム毎の処理-----------------------------------------
onEnterFrame = function () {

//球同士の接触時は運動変更
sesho(A01, B01);
sesho(A01, C01);
sesho(A01, D01);
sesho(B01, C01);
sesho(B01, D01);
sesho(C01, D01);

//壁の反射
hansya(A01);
hansya(B01);
hansya(C01);
hansya(D01);

//球を進める
susumu(A01);
susumu(B01);
susumu(C01);
susumu(D01);


};

直径60ピクセルの円を作り、直径120ピクセルの透明ボタンとセットしにしてムービークリップにする。
そのインスタンスを4つ作り、A01〜D01と名付ける。それぞれに変数xs、ysを持たせる。


■■■■■■■スクリプトは以上です。■■■■■■■








functionで指定した関数「bunkaぶんかい)」の所が一番キモになりますので、少し解説します。

まず、球Uが速度を持って、静止している球Vに衝突した場合を考えます。

sokuV0が初速ベクトルです。
球の衝突図示
球U球Vの中心を通る線の方向が、球Vに伝わる速度ベクトル(球Uから球V移る力)です。
それと直角方向が球Uに残る速度ベクトルです。

初速sokuV0をこの二方向に分解するには、kaku1kaku2の差の角度を三角関数に入れて算出します。
(ActionScriptでは、この直角を、球Uの進行方向の右に入れるか左に入れるかを判断させるためにも、sin関数を使っています。角度を球Uの進行方向目線に直し、差の角度をsinに入れて、マイナスなら右回転方向なので、kaku1から90°引いてやり、プラスなら90°足しています)

上図のように、初速ベクトルは、sokuV1sokuV2に分割されます。





さて、フラッシュ上で運動させるために、このベクトルをさらに、X軸方向とY軸方向にそれぞれ分解してやります。またまた三角関数ですが、もうちょっとの辛抱です(笑)。

まずはsokuV1
球の衝突図解2
sokuV1は角kaku1のサインとコサインでVxsVysに分解できます。

次にsokuV2
球の衝突図解3
さきのsokuV1と同様にして分解。

これで「bunka」のパートが終了です。
次に「atari」の関数で、接触した2球がそれぞれ持っていた速度を合成しあっています。球Uが持っていた速度ベクトルが、衝突で球Uと球Vに別れ、また球Vが持っていた速度ベクトルが同じ衝突で球Uと球Vに別れます。なので、「bunka」関数で球Uからの運動を入力し、次に球Vからの運動を入力してやり、結果を合成してやります。(単純に合計すればOKです)



球同士の接触判定(衝突判定)について
球と球が衝突したかどうかを判定するのに「hitTest()」を使っています。普通に使うと、そのムービークリップを囲む長方形や正方形の範囲になってしまうのでちょっと工夫します。
同じ半径の球Aと球Bの衝突するとき、両球の距離は半径×2(=直径)となります。このことを利用し、まず球のムービークリップを、倍の半径の「透明にしたボタン」とセットにしてやります。(このとき中心をあわせておきます)そして、球A(透明部分も含んでます)と球Bの中心点の座標値で衝突判定をしてやります。

球Aのインスタンス名.hitTest(X,Y,)

のところにtrueか1を入れておくと、球Aのインスタンスが、その座標に衝突しているかどうかを判定できます。
つまり「球Aのインスタンス名.hitTest(球Bの_x,球Bの_y,true)」としてやれば球の衝突判定ができることになります。


フラッシュの膨大な作例がある憲ちゃんのFlashQ&Aで円図形同士の接触判定のやりかたが解説されています。
リンクはこちら「丸図形同士の衝突判定の仕方」



●ミナモハモンのゲーム「アクア」にも、先の球の衝突の式を使いました。リンクはこちらです。

●フラッシュの制作メモのブログも作りました。こちらです






posted by マシモ ユタカ at 23:07| Comment(7) | TrackBack(0) | ミナモハモン

2009年04月04日

らせん視覚効果の実験コンテンツを作りました

サイト「ミナモハモン」に、新たなコンテンツを加えました。カラフルな「らせん」が回転します。

コンテンツ「うずまき」はこちらです。

螺旋回転の視覚効果コンテンツ
マウスポインタの位置に応じて、うずの回転の速さが変わります。色は全部で20パターンあります。どの渦が心地よいでしょうか。

続きを読む

タグ:視覚実験
posted by マシモ ユタカ at 22:28| Comment(0) | TrackBack(0) | ミナモハモン
ページのいちばん上へ戻る