Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/unity3d/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# Unity3D用C实现点击移动_C#_Unity3d - Fatal编程技术网

C# Unity3D用C实现点击移动

C# Unity3D用C实现点击移动,c#,unity3d,C#,Unity3d,我在使用unity3D和C实现点击移动时遇到了一个问题。 这意味着角色将移动到鼠标单击的位置。 但当我的角色移动到目的地时,它将跨越自身 我认为这可能是错误的 controller.SimpleMove transform.forwardspeed; 当我点击像20.5、10.1这样的位置时,用小数点或一些我无法在transform.forwardspeed中显示的数字,因为我的角色永远无法达到这个位置,但会继续尝试。所以我的角色跨度和跨度。。。。。 我猜是吧? 如果为真,我如何修复它 这是我的

我在使用unity3D和C实现点击移动时遇到了一个问题。 这意味着角色将移动到鼠标单击的位置。 但当我的角色移动到目的地时,它将跨越自身

我认为这可能是错误的 controller.SimpleMove transform.forwardspeed; 当我点击像20.5、10.1这样的位置时,用小数点或一些我无法在transform.forwardspeed中显示的数字,因为我的角色永远无法达到这个位置,但会继续尝试。所以我的角色跨度和跨度。。。。。 我猜是吧? 如果为真,我如何修复它

这是我的ClickToMove脚本

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所说,这是一个大话题!