三流作家の雑記帳

三流作家、葉山洋三が日々感じたことを記すブログ

1日15分でマスターするUnityトレーニング:第19回(角度の習得)

前回は砲台を動かすやり方をご紹介しました。
今回はそれの動きを制限する為に角度を扱うやり方を説明します。

使う命令文はこれです。

transform.localEulerAngles

これでググるとオイラー角だの難しい言葉が色々出てきますが、深く考えずに行きましょう。
ゲーム制作は終わりよければすべてよし。結果が全てですので!

例によっていきなり解答を。

-------------------------------------------------------------------------
float y_angle;

void Start () {
character = GetComponent();
   }

void Update () {

           y_angle = transform.localEulerAngles.y;

//台座の回転を抑制
if(y_angle < 40 || y_angle > 320){
transform.Rotate(0, h * rotateSpeed, 0);
}else if(y_angle >= 40 && y_angle <= 41){
transform.Rotate(0, -1.0f, 0);
}else if(y_angle <= 320){
transform.Rotate(0, 1.0f, 0);
}
-------------------------------------------------------------------------

float y_angle;で変数y_angleを宣言しています。これはこの変数に角度を割り当てる為です。
Update内を見るとy_angle = transform.localEulerAngles.y;があります。
これは角度のyだけをy_angleに入れている処理です。

後はif分で角度を制御すれば完成です。
||と&&がありますが、||は「または」、&&「かつ」という意味になります。

if(y_angle < 40 || y_angle > 320)なら40度以下か320度以上の時だけ処理をする、ということですね。
ここの角度制限は頭が茹だってきたので、トライアンドエラーで実装しました。
もっとスマートな表記があるかもしれませんが、上手く行っていますので良しとしましょう。

何故、角度が分かるのだ? と疑問に思った方。鋭いですね。
実はDebug.Logというコマンドがあります。
Debug.Log(y_angle);をスクリプト内に仕込んでおくと、下図のように値がリアルタイムで分かります。
Unity19-1.png

Debug.Log(y_angle);を入れる位置はtransform.Rotate(0, h * rotateSpeed, 0);の上辺りですかね。

動かしてみると、こんな感じ。
範囲外に行った時、逆方向に動いて制限がかかっています。
unity19-2.gif

今回はここまで。
角度を扱うlocalEulerAngles、変数の値を調べるDebug.Logの2つを学びました。
特にDebug.Logは色々と応用が利きますので、どんどん使っていきましょう。

それでは。
  1. 2014/05/10(土) 10:40:37|
  2. Unity
  3. | トラックバック:0
  4. | コメント:0
<<大型バイクの盗難多発 | ホーム | プログラミングの壁>>

コメント

コメントの投稿


管理者にだけ表示を許可する

トラックバック

トラックバック URL
http://8ayama.blog.fc2.com/tb.php/449-0dce414b
この記事にトラックバックする(FC2ブログユーザー)

小説試し読み

販売している小説の冒頭部分です。PDFが開きます。

アルとフィルの大冒険 ~魔法の迷宮~
天賦の才

ご購入はこちらからどうぞ

アルとフィルの大冒険 ~魔法の迷宮~
天賦の才

Blender講座

選択すると、その記事へジャンプ出来ます。

Unity講座

最新記事

広告







月別アーカイブ

カテゴリ

未分類 (0)
雑記 (196)
小説 (29)
時事 (58)
ゲーム (76)
Blender (92)
競馬 (74)
映画 (35)
車/バイク (305)
狩猟/射撃 (98)
Unity (73)

検索フォーム

リンク

このブログをリンクに追加する