Unity5 - 单击以移动脚本不起作用

时间:2016-04-03 06:53:44

标签: c# unity3d

你好我在我的2.5D iso透视多人游戏中使用了这个脚本并且没有让它工作。我认为这可能是因为我使用的多人游戏组件。问题可能是什么想法?我在Unity / Unet的多人示例项目中使用此代码。即使只是提示也会受到高度赞赏

using UnityEngine;
using System.Collections;

[DisallowMultipleComponent]
public class PlayerControlerCTM : MonoBehaviour{
    [SerializeField][Range(1,20)]
    private float speed = 10;
    private Vector3 targetPosition;
    private bool isMoving;

    const int LEFT_MOUSE_BUTTON = 0;

    // Use this for initialization
    void Start () {
        targetPosition = transform.position;
        isMoving = false; 
    }

    // Update is called once per frame
    void Update () {

        if (!isLocalPlayer)
        {
            return;
        }

        if (Input.GetMouseButton(LEFT_MOUSE_BUTTON))
        {
            SetTargetPosition();
        }

        if(isMoving)
        {
            MovePlayer();
        }
    }

    void SetTargetPosition()
    {
        Plane plane = new Plane(Vector3.up, transform.position);
        Ray ray = Camera.main.ScreenPointToRay(Input.mousePosition);
        float point = 0f;

        if(plane.Raycast(ray, out point))
        {
            targetPosition = ray.GetPoint(point);
        }
    }

    void MovePlayer()
    {
        transform.LookAt(targetPosition);
        transform.position = Vector3.MoveTowards(transform.position, targetPosition, speed * Time.deltaTime);

        if(transform.position == targetPosition)
        {
            isMoving = false;
        }

        Debug.DrawLine(transform.position, targetPosition, Color.red);
    }
}

1 个答案:

答案 0 :(得分:0)

您的播放器没有移动,因为您从未更改 isMoving 的值,您已设置 false 。 试试这个:

void SetTargetPosition()
{
     Plane plane = new Plane(Vector3.up, transform.position);
     Ray ray = Camera.main.ScreenPointToRay(Input.mousePosition);
     float point = 0f;

     if(plane.Raycast(ray, out point))
     {
         targetPosition = ray.GetPoint(point);
     }
     isMoving = true; // ADD THIS LINE
}