• ベストアンサー
※ ChatGPTを利用し、要約された質問です(原文:Unity2DでX軸を瞬間移動したい。)

Unity2DでX軸を瞬間移動する方法

このQ&Aのポイント
  • Unity2DでX軸を瞬間移動する方法について解説します。javascriptで作業をしており、瞬間移動のスクリプトや制約について詳しく知りたいと思っています。
  • Unity2Dの瞬間移動に関するスクリプトとして、クリック(タップ)で「GO」「BACK」のメッセージを出すスクリプトを紹介します。また、X軸方向への一定数の瞬間移動や移動の制約についても解説します。
  • Unity2DでのX軸の瞬間移動について、メッセージを出すスクリプトや移動の制約について詳しく解説します。また、タップイベントの取得やオブジェクトの判定などについても触れます。

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

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

>X軸方向へ一定数(-方向と+方向)ポンっと瞬間移動っぽく移動し、 >尚且つ、0値以降行かないようなスクリプトを書きたいのですが、 どうも、その場その場で「こう動くスクリプトはどう書けばいいのか」的に考えているように思えますが、ざっと見たところ、クリックしたオブジェクトを取得し移動させようとしているのですよね? だとすると、それよりもまず、シーンに配置されている(ユーザーが操作する)ゲームオブジェクト群をどう管理するか?から考えたほうがいいように思えますよ。 上記は、忠告。で、質問の移動ですが。 これはGameObjectのtransorm.positionの値を操作するか、transform.Translateメソッドを使います。ただし、これらで位置を変更すると一瞬で移動するので、アニメーションするというより単に消えるだけです。高速でアニメーションして移動するなら、Updateで繰り返し移動し、目的の地点についたら以後は移動させないような仕組みを考えます。 一例としては、アニメーションを実行中を示すフラグ変数と、アニメーションするオブジェクトを保管する変数をあらかじめ用意しておき、オブジェクトをクリックしたらフラグ変数をtrueにする。そしてtrueである間、オブジェクトの位置を移動し続け、目的の地点についたらフラグ変数をfalseに戻す。そういったやり方が考えられます。 // アニメーションのフラグを用意しておく var anim_flag:boolean = false; var anim_obj:GameObject = null; function Update() { ……略…… if (hitObject) { anim_flag = true; anim_obj = hitObject; } if (anim_flag){ anim_obj.transform.position.x += 移動幅; // とりあえずプラス方向に if (anim_obj.transform.position.x > 最大値){ anim_flag = false; } } ……略…… } こういった感じになるでしょう。 ただし、Unityを使ってますから、アニメーションクリップなどで動きを定義してそれを実行させたほうがなめらかなアニメーションが実現できるでしょう。また、ただその場で動かすだけでいいなら別ですが、その後、「どれが移動済みのオブジェクトか」を把握してプログラムを実行させなければいけないなら、冒頭で忠告したように、まず操作するオブジェクトを管理する仕組みから考えたほうがいいでしょう。小手先の問題解決を考えるより、まずは「設計」です。

karakarak
質問者

お礼

遅くなりました! 丁寧にありがとうございます!!