unityで回転させながら移動させる

画像オブジェクトを動かします。

登録した画像をシーンビューにドラッグ&ドロップして配置していく。

画像が重なった場合、下にある画像を上に表示したいときは右のインスペクターパネルの Order in Layer の数値を上げると上に表示されました。

画像ファイルとして丸いボールの画像を用意しました。

ball.png

画面をクリックしたらボールが右に転がるように動かしたいと思います。

・プロジェクトビュー内で右クリック。

・createからC#scriptを選択。

・できたスクリプトファイルに名前をつける。
ballmoveと名付けました。

・できたファイルをダブルクリックして開く。

・編集していく。

public class ballmove : MonoBehaviour の括弧内で

//ボールを動かす変数speed をフロート型で宣言。
float speed = 0;

//回転スピードを入れる変数kaitenをフロート型で宣言。
float kaiten = 0;

Update関数内で

//もしマウスがクリックされたら
//移動スピードを0.1に設定し
// 回転スピードを−7に設定
//kaiten=7とすると反時計回りになってしまう。

if (Input.GetMouseButtonDown (0)) {
this.speed = 0.1f;
this.kaiten = -7;
}

//オブジェクトを回転させる処理
transform.Rotate (0, 0, kaiten);

//オブジェクトを移動させる処理
transform.Translate (speed, 0, 0,Space.World);

・書けたら保存する。スクリプトにボールの動きを記述しました。

このままではまだダメでオブジェクトにこういう動きをしなさいよ、と

伝えてあげないといけないようです。

この作業を「アタッチする」というようです。

やり方は

ballmoveのファイルを左のヒエラルキービューのballにドラッグ&ドロップするとアタッチ完了です。

ではちゃんと動くかどうか確認してみましょう。

シーンビューの上の▶︎ボタンをクリックします。

おおー

ちゃんと思い通りに動かすことができましたー ^0^

*注意点*
Space.Worldを書かないで

transform.Rotate (0, 0, kaiten);
transform.Translate (speed, 0, 0);

このように書くとなんでか移動せずにその場で回転するだけでした。

移動しながら回転させたかったので色々調べたところ

第四引数にSpace.Worldを入れたら思い通りの動きになりました。

第四引数にSpace.Worldと入れると、ワールド座標での移動になるそうです。

まあ、よく分からんのですがこう書くとこう動くと覚えておきます^^;

———————-




コメントを残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です