2016-04-03 4 views
-1

Привет Ive использовал этот скрипт в моем 2.5D изопропиловой перспективы многопользовательской игры и не получить его на работу. Я думал, что это может быть из-за множителя, который я использовал. Любые идеи, в которых может возникнуть проблема? Я использую этот код в многопользовательском примере проекта Unity/Unet. Даже только намек будет высоко оцененUnity5 - Нажмите, чтобы переместить скрипт не работает

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); 
    } 
} 
+0

«Ты» - это тот, кто рассказывает, где проблема. «Мы» помогаем вам решить эту проблему. :) – Mangesh

+0

Почему этот элемент PlayerControlerCTM является MonoBehaviour, а не NetworkBehaviour? – FLX

ответ

0

Ваш игрок не двигается, потому что вы никогда не измените значение isMoving который вы установили ложные. Попробуйте следующее:

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 
} 
+0

Thx за помощью! Глупо меня! Решена проблема OFC, слишком много строк кода для меня;) – flasher213

+0

Это происходит Хахаха, кстати, проверить ответ, чтобы нить получает решить ^^ – marsh

+0

ТНХ не знал. Думаю, что да. – flasher213

Смежные вопросы