C# Unity3D用C实现点击移动
我在使用unity3D和C实现点击移动时遇到了一个问题。 这意味着角色将移动到鼠标单击的位置。 但当我的角色移动到目的地时,它将跨越自身 我认为这可能是错误的 controller.SimpleMove transform.forwardspeed; 当我点击像20.5、10.1这样的位置时,用小数点或一些我无法在transform.forwardspeed中显示的数字,因为我的角色永远无法达到这个位置,但会继续尝试。所以我的角色跨度和跨度。。。。。 我猜是吧? 如果为真,我如何修复它 这是我的ClickToMove脚本C# Unity3D用C实现点击移动,c#,unity3d,C#,Unity3d,我在使用unity3D和C实现点击移动时遇到了一个问题。 这意味着角色将移动到鼠标单击的位置。 但当我的角色移动到目的地时,它将跨越自身 我认为这可能是错误的 controller.SimpleMove transform.forwardspeed; 当我点击像20.5、10.1这样的位置时,用小数点或一些我无法在transform.forwardspeed中显示的数字,因为我的角色永远无法达到这个位置,但会继续尝试。所以我的角色跨度和跨度。。。。。 我猜是吧? 如果为真,我如何修复它 这是我的
using UnityEngine;
using System.Collections;
public class ClickToMove : MonoBehaviour {
public float speed;
public CharacterController controller;
private Vector3 position;
public int arrive =1;
void Start ()
{
}
void Update ()
{
if (Input.GetMouseButton (0))
{
//Locate where we click
locatePosition();
}
MoveToPos ();
//Move to where we click
}
void locatePosition()
{
RaycastHit hit;
Ray ray = Camera.main.ScreenPointToRay (Input.mousePosition);
if (Physics.Raycast (ray, out hit, 1000))
{
position = new Vector3(hit.point.x,hit.point.y,hit.point.z);
Debug.Log(position);
}
}
void MoveToPos()
{ if (Vector3.Distance (transform.position, position) > 1)
{
Quaternion newRotation = Quaternion.LookRotation (position - transform.position);
newRotation.x = 0f;
newRotation.z = 0f;
transform.rotation = Quaternion.Slerp (transform.rotation, newRotation, Time.deltaTime * 10);
controller.SimpleMove (transform.forward*speed);
}
}
}
你不能这样做。您可能需要实现路径查找,这是一个相当广泛的主题。这到底是什么样的游戏?你可以在点击位置生成一个不可见的对象,让你的角色朝那个方向移动,当它到达那里时,销毁实例化的对象?除此之外,商店中还有一些A*路径查找资产和一些教程。但正如@walther所说,这是一个大话题!