Unity中滑鼠點選控制人物移動,就像英雄聯盟一樣
阿新 • • 發佈:2018-12-09
首先,建立一個Cube和Plane
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
public class Move : MonoBehaviour {
public float MoveSpeed;//定義移動速度
// Use this for initialization
void Start () {
}
// Update is called once per frame
void Update () {
Ray ray = Camera.main.ScreenPointToRay(Input.mousePosition);//由攝像機向滑鼠位置發射射線,Input.mousePosition為滑鼠點選的位置
RaycastHit hit;
Physics.Raycast(ray, out hit);
transform.Translate(transform.forward * MoveSpeed * Time.deltaTime, Space.World);//朝當前方向移動
if (Input.GetMouseButtonDown(0))
{
if (hit.collider.gameObject.name == "Plane")//當射線碰撞到的是Plane
{
if (Vector3.Distance(transform.position, hit.point) > 0.1f)//當自身位置和滑鼠點選位置大於0時
{
transform.LookAt(hit.point);//看向滑鼠點選的方向
MoveSpeed = 3f;
}
}
}
if (Vector3.Distance(transform.position, hit.point) < 0.5f)//用“0.5f”是為了使檢測範圍大一點,以防Cube一直朝當前方向移動不會停下來
{
MoveSpeed = 0;
}
}
}
之後,把指令碼掛在Cube上,點選Plane的任意位置,Cube便可在Plane平面上移動到滑鼠點選的位置