• ベストアンサー

アクションスクリプトについて

今シューティングゲームで画面の右から敵がきて左に向かってくflashを作ってるのですが、 敵が画面から消えてまた右端から出てくるときに下や上すぎて体が半分しか見えない ときがあります。 なのでy軸を制限したいのですが、どうすればいいのでしょうか? よろしくお願いします。 onClipEvent(enterFrame) { if (_x < 0) { _rotation = 0; _x = Stage.width; _y = Math.random() * Stage.height; }

質問者が選んだベストアンサー

  • ベストアンサー
noname#35109
noname#35109
回答No.1

書かれているスクリプトの _y = Math.random() * Stage.height; で,一応はy軸を制限していますよね。 でも,これではまるまるステージの高さの範囲内になります。       ■ ←ムービークリップのつもり ------■■-------------------   ↑   ■   |   | Stage.height   |   |   ↓   ■ ------■■-------------------       ■ だから, 一度 Stage.height から ムービークリップの高さ を引いて, ムービークリップの高さの半分 を足せば, ムービークリップ全体が Stage.height の中に収まると思いますよ。 ただし,ムービークリップの基準点がムービークリップの中心にあるときですが。 半分日本語で書くと _y = Math.random()*(Stage.height - ムービークリップの高さ) + ムービークリップの高さ/2; これをスクリプトに当てはめると _y = Math.random()*(Stage.height-_height)+_height/2; こんな感じです。 ムービークリップの _x を右から左に動かす部分を含めて全体を書くと以下のようになります。 (勝手に _x の変化を 25 にしています。) onClipEvent (enterFrame) { _x -= 25; if (_x<0) { _rotation = 0; _x = Stage.width; _y = Math.random()*(Stage.height-_height)+_height/2; } } もし,ムービークリップの基準点が,ムービークリップの中心からずれているときは, _y = Math.random()*(Stage.height-_height)+_height/2+○○; の○○の部分に数を入れて補正すれば良いと思います。