Quantcast
Channel: かずきのBlog@hatena
Viewing all articles
Browse latest Browse all 1387

CharacterControllerを使ってクリックした位置まで物体を移動させる

$
0
0

Cube(地面用)とCube(動かす用)の2個を配置して動かすほうのCubeにCharacterControllerを追加します。

んで、コードも追加して以下のように書くと動いた。

using UnityEngine;
using System.Collections;

publicclass Move : MonoBehaviour
{
    /// <summary>/// 目的地/// </summary>private Vector3 goal;
    /// <summary>/// キャッシュ用/// </summary>private CharacterController controller;

    // Use this for initializationvoid Start()
    {
        // とりあえずのゴールは現在地this.goal = transform.position;
        // CharacterControllerをキャッシュしとくthis.controller = this.GetComponent<CharacterController>();
    }

    // Update is called once per framevoid Update()
    {
        // 移動速度
        Vector3 velocity = Vector3.zero;
        if (this.controller.isGrounded)
        {
            // 地面についてたらif (Input.GetButtonDown("Fire1"))
            {
                // 現在のマウスの位置から地面にRayを飛ばしてゴールの場所を特定する
                var ray = Camera.main.ScreenPointToRay(Input.mousePosition);
                RaycastHit info;
                if (Physics.Raycast(ray, out info))
                {
                    this.goal = info.point;
                }
                else
                {
                    // ぶつからなかったら何もしないreturn;
                }
            }

            if (Vector3.Distance(goal, transform.position) < 0.5f)
            {
                // ゴールと今の場所が近かったら何もしないreturn;
            }

            // ゴールと現在地の差分を正規化して
            var direction = (this.goal - transform.position).normalized;
            // 速度をかけて
            velocity = direction * 5.0f;

            // 一応ジャンプも考慮してif (Input.GetButton("Jump"))
            {
                velocity.y = 60.0f;
            }
            else
            {
                velocity.y = 0;
            }

        }

        // 重力を加味して
        velocity.y -= 20.0f;

        // 移動this.controller.Move(velocity * Time.deltaTime);

        // 物体を目的地のほうに向ける
        transform.LookAt(this.goal);
    }
}

くっそ苦労したなぁ…。Unity弱者は辛い。


Viewing all articles
Browse latest Browse all 1387

Trending Articles



<script src="https://jsc.adskeeper.com/r/s/rssing.com.1596347.js" async> </script>