
スクリプト初心者です。
●矢印の形をした、ムービークリップ(mc1)がステージ端まで移動すると跳ね返り、跳ね返る方向に向きを変えるスクリプトで悩んでいます・・。
●ステージサイズ:400×300
シーン1、1フレーム目にmc1配置。
mc1をシーン1に配置の際、角度45度に。
mc1に下記スクリプトを書きました。
onClipEvent(load){
vx=5;
vy=5;
}
onClipEvent(enterFrame){
this._x += vx;
this._y += vy;
if (400 < this._x) {
vx = -5;
this._rotation=-135;
}
if (300 < this._y) {
vy = -5;
this._rotation=135;
}
if (this._x < 0) {
vx = 5;
this._rotation=-45;
}
if (this._y < 0) {
vy = 5;
this._rotation=45;
}
}
●ステージ端まで行くと矢印(mc1)が跳ね返る事は、出来たのですが、方向(回転角度)がうまく出来ませんでした・・。
自分でも、これでは、回転角度がうまく行かないと分かってはいるのですが・・。
どなたかお分かりの方おられましたら助けてください!
よろしくお願いいたします。

No.2ベストアンサー
- 回答日時:
#1の方の方法でもできると思います。
私は,質問者さまのスクリプトを延長させた場合について回答します。
矢印を上向き(↑)に作図して,
その上向き矢印をムービークリップに変換したものとします。
その上向き矢印のムービークリップに書くスクリプトを,
次のようにすればうまく行くと思います(コピペ可能です)。
----------------------------------------------
onClipEvent (load) {
// 右下へ進ませるように変数を設定
vx = 5;
vy = 5;
// 右下へ向かせる
this._rotation = 135;
}
onClipEvent (enterFrame) {
this._x += vx;
this._y += vy;
// 右端まで行ったとき
if (400<this._x) {
// 左方向へ進ませる
vx = -5;
if (vy>=0) {
// 下へ進んでいたら左下を向かせる
this._rotation = -135;
} else {
// 上へ進んでいたら左上を向かせる
this._rotation = -45;
}
}
// 下端まで行ったとき
if (300<this._y) {
// 上方向へ進ませる
vy = -5;
if (vx>=0) {
// 右へ進んでいたら右上を向かせる
this._rotation = 45;
} else {
// 左へ進んでいたら左上を向かせる
this._rotation = -45;
}
}
// 左端まで行ったとき
if (this._x<0) {
// 右方向へ進ませる
vx = 5;
if (vy>=0) {
// 下へ進んでいたら右下を向かせる
this._rotation = 135;
} else {
// 上へ進んでいたら右上を向かせる
this._rotation = 45;
}
}
// 上端まで行ったとき
if (this._y<0) {
// 下方向へ進ませる
vy = 5;
if (vx>=0) {
// 右へ進んでいたら右下を向かせる
this._rotation = 135;
} else {
// 左へ進んでいたら左下を向かせる
this._rotation = -135;
}
}
}
----------------------------------------------
つまり,
矢印が各端まで行ったときに,
各向きへ向かせる値を定めるには,
さらに場合分けが必要だということです。
上のスクリプトで,
行の先頭に 「//」 の付いた行は注釈行(コメントアウト)です。
注釈行を入れた理由は,
この回答でスクリプトを説明するためでもありますが,
実際に自分が作る上で頭がこんがらがらないように,
メモをしながら作成したという理由もあります。
自分のために注釈行を入れながら,
ゆっくり考えて作るとできると思いますよ。
この回答への補足
すみません。
●矢印を上向き(↑)に作図して,
その上向き矢印をムービークリップに変換したものとします。
上記、ご回答いただいた分を、読み忘れていました。
無事解決いたしました!!
ゆっくり考えてメモを取りながら作成していこうと思います。
本当にありがとうございました。
以前もお世話になったかと思います!!
とても丁寧に教えていただきまして、本当にありがとうございます。
私の説明不足だったかと思います。
mc1矢印→は右向きに作りました。
シーン1に配置する際、
進行方向に向かせる為に45度回転させております。
自分の分かる方法で出来るのであれば、
これで作ってみたいので、アドバイスを参考に
いろいろ試してみようとおもいます。
ありがとうございました!!
No.1
- 回答日時:
とりあえずデフォルト(45°にする前の状態)の矢印の向きが右向きだとして説明します
(たぶん現状がそうだと思うので)
onClipEvent(load){}内に下記functionを追加記述
function rotChange(ry, rx) {
var r = Math.atan2(ry, rx);
this._rotation = Math.floor(r*180/Math.PI);
}
そして、onClipEvent(enterFrame){}のthis._rotation=~と
している全ての行を下記に変更
rotChange(vy, vx);
もしくはthis._rotation=~を全て消し、最終行に上記を追加でもOKです
これでXとYの移動量から自動で角度を求めて変更してくれます
回答いただきまして、ありがとうございます。
無事、解決いたしました!!
なぜ、出来たのか・・???
全く分からないので・・(勉強不足でスミマセン・・。。)
いただいたスクリプトを元に、理解する様にします。
本当にありがとうございました。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- 英語 「this is the/my first time~」の文法上の制約について 1 2023/04/06 09:48
- 英語 Statistically significant differences (p < 0.05), 5 2022/05/03 01:09
- 英語 語順 1 2023/01/24 20:54
- 英語 英語の仮定法について If he were in this age, that man would 1 2022/12/12 23:52
- JavaScript jQueryでのドラッグアンドドロップについて 1 2022/07/07 21:04
- 物理学 真空中に電位差Vに帯電した辺の長さlの正方形 の極板がある。 極板間の距離をdとする. いま, 初速 1 2022/11/24 16:07
- Gmail チャットGPTの登録ができない 1 2023/03/07 02:43
- その他(IT・Webサービス) ChatGPTで質問を入れるとエラーしか出ない 1 2023/03/22 14:21
- 英語 This low-frequency selective cutting action provid 1 2023/03/05 12:05
- Visual Basic(VBA) VBA This Workbookモジュールを別ファイルにコピーする方法 1 2022/09/14 01:51
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
ムービークリップの位置と角度...
-
フレーム内のオプションボタン...
-
ActionScriptに関しての質問
-
Flash lite1.0で カウントダウン
-
プルダウンメニューとフェード...
-
シェイプトゥイーンで離れた位...
-
as3 SharedObjectクラスを使用...
-
CupCatの使い方
-
C#でDLLファイル読み込みを行う...
-
外部ファイルからのデータの読...
-
FLASH 文字を手書き風に出現さ...
-
flvを読み込んだときの処理につ...
-
FLASH MX フェードイン2
-
flashを一度だけ再生するHTMLは...
-
ソーラーパネルのアルミフレー...
-
Flash ドラック&ドロップ 色の...
-
Flash Lite1.1について
-
Access2010でサブフォームのフ...
-
外部JPGを読み込んだ場合のロー...
-
コマンドボタンのクリックによ...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
プリローダーで、画像を下から...
-
ActionScriptで決めた時間だけ...
-
onEnterFrameの中止
-
Flash Lite 1.1(KDDI)で日数カ...
-
flashのgetURLがエラーになって...
-
流星が流れるような感じにした...
-
フレーム内のオプションボタン...
-
フレーム内に移動したい
-
phpで音を鳴らす
-
オプションボタンを矢印キーで...
-
Access2010でサブフォームのフ...
-
VBで動的に作成したパネルの上...
-
GetPrivateProfileString変値
-
車の運転時のメガネ 縁なし(...
-
WEBブラウザの重複起動の禁止
-
正解表示
-
ドロップフレームの計算をエク...
-
オシロスコープのような描写方...
-
2Dゲーム作成する際、アニメー...
-
cisco catalystのトラブルシュ...
おすすめ情報