2016-04-03 7 views
-1

Hallo Ive dieses Skript in meinem 2.5D iso Perspektive Multiplayer-Spiel verwendet und es nicht zur Arbeit gebracht. Ich dachte es könnte wegen der Multiplayer-Komponente sein, die ich benutzt habe. Irgendwelche Ideen wo das Problem sein könnte? Ich verwende diesen Code im Multiplayer-Beispielprojekt von Unity/Unet. Auch nur ein Hauch hochUnity5 - Click to Move Skript funktioniert nicht

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

"Sie" sind derjenige, der sagt, wo das Problem ist. "Wir" helfen Ihnen, es zu lösen. :) – Mangesh

+0

Warum ist dieses PlayerControlerCTM-Ding ein MonoBehaviour und kein NetworkBehaviour? – FLX

Antwort

0

Ihr Spieler bewegt sich nicht geschätzt werden würde, weil man nie den Wert von isMoving ändern, die Sie falsch festgelegt haben. Versuchen Sie dies:

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

Danke für Hilfe! Dumm mir! Das Problem vonc gelöst, zu viele Zeilen Code für mich;) – flasher213

+0

Das passiert hahaha übrigens, überprüfen Sie die Antwort, damit der Thread gelöst wird ^^ – marsh

+0

thx nicht wissen. Ich glaube das habe ich getan. – flasher213

Verwandte Themen