『Unity5ゲーム開発レシピ』「Part02 応用編 Chapter01 キャラクターを制御する」 学習記録3

Unity5ゲーム開発レシピ ハマるゲーム制作のノウハウ

Unity5ゲーム開発レシピ ハマるゲーム制作のノウハウ

序文

『Unity5ゲーム開発レシピ』19日目。

なんだかんだで長期連載になってきましたね。
1ヶ月で終わるでしょうか。

進捗

  • Part02 応用編
    • Chapter01 キャラクターを制御する

(学習時間:1.5時間)

コード実装部分

\Chapter1\PART02_CHAPTER01\004\before\dungeon\assets\Scripts\AdjustDirection.cs

using UnityEngine;
using System.Collections;

public class AdjustDirection : MonoBehaviour
{
    public float maxDistance = 3f;
    public float maxAngle = 45f;

    void Start ()
    {
    }

    void Update ()
    {
        // Scene上でキャラクター前方に緑の線を描く
        Debug.DrawRay(transform.position, transform.forward * maxDistance, Color.green);

        // Jumpキーが押されたら
        if (Input.GetButtonDown("Jump")) {
            // キャラクター前方に向かってRayを飛ばす
            Ray ray = new Ray (transform.position, transform.forward);
            RaycastHit hit = new RaycastHit ();

            // maxDistance内でrayがhitしたら
            if (Physics.Raycast (ray, out hit, maxDistance)) {
                // hit先のオブジェクトの中心の位置情報を取得する
                Vector3 target = hit.collider.transform.position;
                // Y軸(高さ)情報をプレイヤー位置に合わせる
                target.y = transform.position.y;
                // hit先のオブジェクトがmaxAngle以内にあれば
                if (Vector3.Angle (transform.forward, target - transform.position) < maxAngle) {
                    // hit先のオブジェクトのほうを向く
                    Debug.DrawRay(transform.position, transform.forward * maxDistance, Color.red, 1f);
                    transform.LookAt (target);
                }
            }
        }
    }
}

実行結果

f:id:yjkym:20180629151553p:plain よくわからない

感想

やったこと。

  • キャラクターが認識したオブジェクトの中心方向を自動的に向く仕組みの実装
  • 移動する方向へ滑らかに回転する仕組みの実装
  • あえて不自然なゲーム的な動きを実装する仕組み

最後のやつあんまり使いみちがわかんない。

間にスワイプを感知する仕組みを実装するというすごく実践的なTipsもあったんですが、SDK関連の設定がいまだに詰まっているので保留しています。(+_+)
いろいろ不具合出てきてるので、バックアップとって一旦PCリセットしたいんだけど、Linuxの再設定を自分でできる気がしない。困った。

カロリーメイトください。

BGM

王者の休日 / KREVA
www.youtube.com