もはや惰性駆動型サイトとかいうレベルじゃない気がする今日この頃。
メインPCのSafari(Win版)が起動しなくなった。インストールし直しても起動しない。何かエラーダイアログを表示するわけでもない。
バージョンを変えて試してみたら、ver4.0.2までは正常に動かせるがver4.0.3は動かせないことが発覚。・・・でも問題が見えない・・・。
あと別のPCにSafari ver4.0.3を入れてみたら普通に動いた。ますますよく分らん。
まぁもっぱらテスト環境として使ってるぐらいで常用しているわけではないのだが、Safari4はJavaScriptの実行速度が結構速いだけに(そして多分もっと速くなるだろうから)手元に最新版を置いておきたいわけで・・・。うぅ・・・。
忌々しいエラーログもキャラに言わせれば少しは許容できるのでは、ということで。
ソース。FirefoxとIEでしか動かない。
<script> window.onerror = (function(){ var el; window.onload = function(){ el = el ? el : document.createElement("div"); //ここから el.style.position = "absolute"; el.style.bottom = "250px"; el.style.right = "240px"; el.style.width = "200px"; el.style.height = "200px"; //ここまでエラー表示部分のスタイル。適宜設定されたし。 var base = document.createElement("div"); //ここから base.style.position = "absolute"; base.style.bottom = "0"; base.style.right = "0"; base.style.height = "500px"; base.style.width = "500px"; base.style.backgroundImage = 'url("image.png")'; base.style.backgroundRepeat = "no-repeat"; //ここまでキャラクター表示及び吹き出し部分のスタイル。適宜設定されたし。 base.appendChild(el); document.body.appendChild(base); } return function(mess,file,row){//左から順にエラーメッセージ、エラー発生箇所のファイル名、エラー発生箇所の行数。 el = el ? el : document.createElement("div"); //エラー表示 el.innerHTML += "<span style='color:#f00;font-weight:bold;font-family: sans-serif;'>" + mess + "</span><br />" + "<span style='color:#33f;font-weight:bold;font-family: sans-serif;'> @" + file + ":" + row + "\u884c\u76ee</span><br />"; return true;//ブラウザのエラーコンソールへの出力を抑制。falseを返すとエラーコンソールにも出力される。 } })(); </script>
実際忌々しいのはエラーログじゃなくてエラーそのものなわけだが。
「JavaScriptで弾幕STGを作る方針で。」誠意製作中。前回の反省を生かしもう少し計画的に設計している・・・はず。今はひたすらマネージメント的なところばっかいじっているところ。
当たり判定オブジェクトとして円形と楕円形を考えているわけだが、楕円形の当たり判定って案外めんどくさい。楕円形対点だったら楕円の公式使うなり焦点との距離の和を求めるなりすればいいわけだが、楕円対円だといろいろとややこしい(楕円対楕円は使う所がなさそうなんで放置。)。一応楕円の当たり判定に関して書いているサイトはあるが、めんどくさい、時間食いそう、ということでもっと手抜きな方法を使うことにした。
楕円の長径と短径の長さをそれぞれ円の半径分足して、その楕円と円の中心座標との当たり判定処理にする。短径/長径比が小さいor円の半径が大きいと誤差が大きくなる(当たってるはずだけど当たりと判定されない領域が増える)。が、自機当たり判定円の小さい弾幕STGなら後者は問題にならないと思うし、前者もテストしてみた範囲ではそこまで気にならない感じなのでこの方法でよいかな、ということで。
以下JSコード。
var hitTest = function(ellipse,circle){ //ellipse{//楕円データ // x:中心X座標 // y:中心Y座標 // xradius:x軸方向半径 // yradius:y軸方向半径 // angle:回転角。反時計回りが正 //} //circle{ // x:中心X座標 // y:中心Y座標 // radius:半径 //} var _dx = circle.x-ellipse.x, _dy = circle.y - ellipse.y; var si = Math.sin(ellipse.angle), co = Math.cos(ellipse.angle); var dx = co*_dx - si*_dy; var dy = si*_dx + co*_dy; if(Math.pow(dx/(ellipse.xradius+circle.radius),2)+Math.pow(dy/(ellipse.yradius+circle.radius),2) <= 1){ return true; }else{ return false; } }
土日に部屋の整理をやったら筋肉痛になった。紙ごみが紙袋8袋分になった。現代人ってこんなもんだよね、・・・って意味分らんね。
とりあえず今日はパソ部に顔出したのちバイトへ。
いい加減星蓮船クリアしたい。
「JavaScriptで弾幕シューティングゲームを作る方針で。」
ということでJS東方を1から作り直す方針で。東方という括りに絞らないことにする。
きっと登場人物がどいつもこいつもメタ発言しまくったり東方旧作ネタを振ってきたりするような弾幕STGになるかと思います。
とまぁこんな感じでこの場で作る物を言っておけば引くに引けなくなって無茶してでも期限に間に合わせられるようになるんじゃないか、ということで言っときます。実際スケジュール的に間に合うかどうかわかりませんが。
大学の帰りに『破』を観た。
コミケ一般参加。思えばこの一年で自分もずいぶん変わったものだ(東方厨的な意味で)。
開場前待機の行列より神主参拝列の行列の方が辛かった。
星蓮船購入。とりあえずEasyクリア。・・・難易度高い気がする。
町田で散髪。の後PC同好会に顔を出した。gdgd。
話変わって文花帖。
あともう少しで2^10だったのに(そういうゲームではない)。4桁届いてしまった・・・。
どうにかLevel10まで解放されたもののLevel9以降のスペカが取れる気がしない。別のゲームのエクストラに手をつけるべきか、鍛錬も兼ねて。
とりあえず昨日で試験が終了し、ようやく夏休みに突入。怠惰の限りを尽くしたい。
日帰りで帰省。祖父母宅が東京と神奈川なもので。田舎感がしない、というか自宅より都会的。
せめて生存報告しろと某所で言われたので生存報告をば。