-1

Hi I am using uNet Unity Multiplayer and my player controls dose not work properly. i connect 2 devices on 1 device it work good but on other device it does not move left or right nor jump. only local player can move local character

Here is the Code

using UnityEngine;

using System.Collections; using UnityEngine.Networking;

public class Player1 : NetworkBehaviour {

private static Player1 playerInstance;

public static Player1 PlayerInstance {
    get {

        return  playerInstance;
    }

}


void Awake ()
{

    playerInstance = this;
}

public GameObject horseRun;
public GameObject horsesaddleregdoll;
public GameObject pauseCamera;
CharacterController controller;
public Animator anim;
public int horseNum;
public GameObject cam;

void Start ()
{
    if (isLocalPlayer) {
        controller = GetComponent<CharacterController> ();
        transform.position = position2.position;
        currentPos = 2;
        anim.SetInteger ("horse", 0);
        AudioManagerScript.AudioInstence.horseWhinny (horseNum);
    } else {
        Camera cam = GetComponentInChildren <Camera> ();
        cam.enabled = false;
        //          cam.gameObject.SetActive (false);
        //          this.enabled = false;
    }
    Time.timeScale = 0;
    position1 = GameObject.Find ("Position1").transform;
    position2 = GameObject.Find ("Position2").transform;
    position3 = GameObject.Find ("Position3").transform;
    position4 = GameObject.Find ("Position4").transform;
}

public float speed = 10.0f;
public Transform position1;
public Transform position2;
public Transform position3;
public Transform position4;
int currentPos = 1;
bool moveFromPos1ToPos2;
bool moveFromPos2ToPos1;
bool moveFromPos2ToPos3;
bool moveFromPos3ToPos2;
bool moveFromPos3ToPos4;
bool moveFromPos4ToPos3;

float timeMove = 0;
public float jumpspeed = 10.0f;
public float gravity = 20.0f;
private Vector3 moveDirection = Vector3.zero;

public Vector2 findDirection;
public Vector2 startPoint;
public Vector2 endPoint;

// Update is called once per frame
void Update ()
{
    if (isLocalPlayer) {
        timerStep -= Time.deltaTime;
        gameObject.transform.position += new Vector3 (0, 0, Time.deltaTime * 80.0f);
        if (moveFromPos1ToPos2) {
            if (timeMove >= .5f) {
                transform.position = new Vector3 (position1.position.x, transform.position.y, transform.position.z);
                transform.localEulerAngles = new Vector3 (0, 0, 0);
                moveFromPos1ToPos2 = false;
                currentPos = 2;
                Debug.Log ("Current Pos" + currentPos);
            }
            timeMove += Time.deltaTime;
            transform.position = Vector3.Lerp (new Vector3 (position1.position.x, transform.position.y, transform.position.z), new Vector3 (position2.position.x, transform.position.y, transform.position.z), timeMove * 2);
        }
        if (moveFromPos2ToPos1) {
            if (timeMove >= .5f) {
                transform.position = new Vector3 (position2.position.x, transform.position.y, transform.position.z);
                transform.localEulerAngles = new Vector3 (0, 0, 0);
                moveFromPos2ToPos1 = false;
                currentPos = 1;
                Debug.Log ("Current Pos" + currentPos);
            }
            timeMove += Time.deltaTime;
            transform.position = Vector3.Lerp (new Vector3 (position2.position.x, transform.position.y, transform.position.z), new Vector3 (position1.position.x, transform.position.y, transform.position.z), timeMove * 2);
        }
        if (moveFromPos2ToPos3) {
            if (timeMove >= .5f) {
                transform.position = new Vector3 (position2.position.x, transform.position.y, transform.position.z);
                transform.localEulerAngles = new Vector3 (0, 0, 0);
                moveFromPos2ToPos3 = false;
                currentPos = 3;
                Debug.Log ("Current Pos" + currentPos);
            }
            timeMove += Time.deltaTime;
            transform.position = Vector3.Lerp (new Vector3 (position2.position.x, transform.position.y, transform.position.z), new Vector3 (position3.position.x, transform.position.y, transform.position.z), timeMove * 2);
        }
        if (moveFromPos3ToPos2) {
            if (timeMove >= .5f) {
                transform.position = new Vector3 (position3.position.x, transform.position.y, transform.position.z);
                transform.localEulerAngles = new Vector3 (0, 0, 0);
                moveFromPos3ToPos2 = false;
                currentPos = 2;
                Debug.Log ("Current Pos" + currentPos);
            }
            timeMove += Time.deltaTime;
            transform.position = Vector3.Lerp (new Vector3 (position3.position.x, transform.position.y, transform.position.z), new Vector3 (position2.position.x, transform.position.y, transform.position.z), timeMove * 2);
        }
        if (moveFromPos3ToPos4) {
            if (timeMove >= .5f) {
                transform.position = new Vector3 (position3.position.x, transform.position.y, transform.position.z);
                transform.localEulerAngles = new Vector3 (0, 0, 0);
                moveFromPos3ToPos4 = false;
                currentPos = 4;
                Debug.Log ("Current Pos" + currentPos);
            }
            timeMove += Time.deltaTime;
            transform.position = Vector3.Lerp (new Vector3 (position3.position.x, transform.position.y, transform.position.z), new Vector3 (position4.position.x, transform.position.y, transform.position.z), timeMove * 2);
        }
        if (moveFromPos4ToPos3) {
            if (timeMove >= .5f) {
                transform.position = new Vector3 (position4.position.x, transform.position.y, transform.position.z);
                transform.localEulerAngles = new Vector3 (0, 0, 0);
                moveFromPos4ToPos3 = false;
                currentPos = 3;
                Debug.Log ("Current Pos" + currentPos);
            }
            timeMove += Time.deltaTime;
            transform.position = Vector3.Lerp (new Vector3 (position4.position.x, transform.position.y, transform.position.z), new Vector3 (position3.position.x, transform.position.y, transform.position.z), timeMove * 2);
        }
        moveDirection.y -= gravity * Time.deltaTime;
        controller.Move (moveDirection * Time.deltaTime);
    }
}

//.................................. Horse Run to Jump & Jump to Run Animation States  ......................
public void HorseJumpState ()
{
    Debug.Log ("JUMP HORSE" + gameObject.name);
    moveDirection.y = jumpspeed;
    controller.radius *= 0.5f;
    Invoke ("JumpTime", .8f);
    Invoke ("HorseRunState", 0.75f);
}

public void HorseRunState ()
{
    anim.SetInteger ("horse", 0);
}

public void HorseIdleState ()
{
    anim.SetInteger ("horse", 5);
}

float timerStep = 1.25f;

void JumpTime ()
{
    controller.radius *= 2;
}

public void JumpButton ()
{
    if (isLocalPlayer) {
        Time.timeScale = 1;
        Debug.Log ("timer" + timerStep);
        if (timerStep <= 0 && controller.isGrounded) {
            timerStep = 1.25f;
            {
                anim.SetInteger ("horse", 1);
                Invoke ("HorseJumpState", .00001f);
                AudioManagerScript.AudioInstence.jumpSound (horseNum);
            }
        }
    }
}

public void SwipeLeft ()
{
    if (position1 == null || position2 == null || position3 == null || position4 == null) {
        position1 = GameObject.Find ("Position1").transform;
        position2 = GameObject.Find ("Position2").transform;
        position3 = GameObject.Find ("Position3").transform;
        position4 = GameObject.Find ("Position4").transform;
    }
    Time.timeScale = 1;
    if (isLocalPlayer) {
        if (currentPos == 2 && controller.isGrounded && !moveFromPos1ToPos2 && !moveFromPos2ToPos1 && !moveFromPos2ToPos3 && !moveFromPos3ToPos2 && !moveFromPos3ToPos4 && !moveFromPos4ToPos3) {
            moveFromPos2ToPos1 = true;
            transform.localEulerAngles = new Vector3 (0, -15, 0);
            timeMove = 0;
        } else if (currentPos == 3 && controller.isGrounded && !moveFromPos1ToPos2 && !moveFromPos2ToPos1 && !moveFromPos2ToPos3 && !moveFromPos3ToPos2 && !moveFromPos3ToPos4 && !moveFromPos4ToPos3) {
            moveFromPos3ToPos2 = true;
            transform.localEulerAngles = new Vector3 (0, -15, 0);
            timeMove = 0;
        } else if (currentPos == 4 && controller.isGrounded && !moveFromPos1ToPos2 && !moveFromPos2ToPos1 && !moveFromPos2ToPos3 && !moveFromPos3ToPos2 && !moveFromPos3ToPos4 && !moveFromPos4ToPos3) {
            moveFromPos4ToPos3 = true;
            transform.localEulerAngles = new Vector3 (0, -15, 0);
            timeMove = 0;
        }
    }
}

public void SwipeRight ()
{
    if (position1 == null || position2 == null || position3 == null || position4 == null) {
        position1 = GameObject.Find ("Position1").transform;
        position2 = GameObject.Find ("Position2").transform;
        position3 = GameObject.Find ("Position3").transform;
        position4 = GameObject.Find ("Position4").transform;
    }
    Time.timeScale = 1;
    if (isLocalPlayer) {
        if (currentPos == 1 && controller.isGrounded && !moveFromPos1ToPos2 && !moveFromPos2ToPos1 && !moveFromPos2ToPos3 && !moveFromPos3ToPos2 && !moveFromPos3ToPos4 && !moveFromPos4ToPos3) {
            moveFromPos1ToPos2 = true;
            transform.localEulerAngles = new Vector3 (0, 15, 0);
            timeMove = 0;
        } else if (currentPos == 2 && controller.isGrounded && !moveFromPos1ToPos2 && !moveFromPos2ToPos1 && !moveFromPos2ToPos3 && !moveFromPos3ToPos2 && !moveFromPos3ToPos4 && !moveFromPos4ToPos3) {
            moveFromPos2ToPos3 = true;
            transform.localEulerAngles = new Vector3 (0, 15, 0);
            timeMove = 0;
        } else if (currentPos == 3 && controller.isGrounded && !moveFromPos1ToPos2 && !moveFromPos2ToPos1 && !moveFromPos2ToPos3 && !moveFromPos3ToPos2 && !moveFromPos3ToPos4 && !moveFromPos4ToPos3) {
            moveFromPos3ToPos4 = true;
            transform.localEulerAngles = new Vector3 (0, 15, 0);
            timeMove = 0;
        }
    }
}

bool gameOver = false;

void GameOveronTriggerEnter ()
{
    if (!gameOver) {
        gameOver = true;
        GUIManager.GuiInstance.gameOver.SetActive (true);
        GUIManager.GuiInstance.GrassObstaclesDestroy ();
        GUIManager.GuiInstance.Invoke ("AdsCall", .7f);
        AudioManagerScript.AudioInstence.pauseSound ();
        GUIManager.GuiInstance.scorecheck ();
    }
}

void DisableScript ()
{
    GameObject player = GameObject.FindGameObjectWithTag ("Player");
    player.GetComponent<Player1> ().enabled = false;
    GameObject[] anims = GameObject.FindGameObjectsWithTag ("animator");
    for (int i = 0; i < anims.Length; i++)
        anims [i].GetComponent<Animator> ().enabled = false;
}

bool gameOverfalse = false;
//.................... Obstacles Triggers .................
void OnTriggerEnter (Collider coll)
{
    int grass = GUIManager.GuiInstance.grass;
    if (coll.gameObject.tag == "hurdle" || coll.gameObject.tag == "bridgehurdles" && gameOverfalse == false) {
        gameOverfalse = true;
        horseRun.SetActive (false);
        horsesaddleregdoll.SetActive (true);
        AudioManagerScript.AudioInstence.horseDie (horseNum);
        gameObject.GetComponent<Player1> ().enabled = false;
        pauseCamera.SetActive (false);
        Invoke ("GameOveronTriggerEnter", 2.0f);
        Invoke ("DisableScript", 1.5f);
        GUIManager.GuiInstance.gamePanelSingle.SetActive (false);
        GUIManager.GuiInstance.singleWater = false;
    } else if (coll.gameObject.tag == "Single") {
        GUIManager.GuiInstance.score += 10 * grass;
    } else if (coll.gameObject.tag == "Double") {
        GUIManager.GuiInstance.score += 25 * grass;
    } else if (coll.gameObject.tag == "Tripple") {
        GUIManager.GuiInstance.score += 50 * grass;
    } else if (coll.gameObject.tag == "Forth") {
        GUIManager.GuiInstance.score += 100 * grass;
    } else if (coll.gameObject.tag == "Grass") {
        Debug.Log ("Grass", coll.gameObject);
        GUIManager.GuiInstance.grass++;
        AudioManagerScript.AudioInstence.Collectable (horseNum);
        //GUIManager.GuiInstance.score+= 250*2;
        Destroy (coll.gameObject);
    } else if (coll.gameObject.tag == "grassreset") {
        Debug.Log ("Grass", coll.gameObject);
        GUIManager.GuiInstance.grass = 1;
        //GUIManager.GuiInstance.score+= 250*2;
        Destroy (coll.gameObject);
    }


    if (coll.gameObject.tag == "snow") {
        Debug.Log ("Trigger Enter");
        GUIManager.GuiInstance.snow.SetActive (true);
    }



}

bool dontMove = false;
//..................While Horse on Bridge ......................
void OnTriggerStay (Collider colstay)
{

    if (colstay.gameObject.tag == "Bridge") {
        dontMove = true;
        Debug.Log ("Trigger Stay");
        moveFromPos1ToPos2 = false;
        moveFromPos2ToPos1 = false;
        transform.localEulerAngles = new Vector3 (0, 0, 0);
        //          cam.GetComponent<SmoothFollow> ().height = 50;
    }
}

void OnTriggerExit (Collider colexit)
{

    if (colexit.gameObject.tag == "Bridge") {
        dontMove = false;
        //          cam.GetComponent<SmoothFollow> ().height = 35;
    }


    if (colexit.gameObject.tag == "snow") {
        Debug.Log ("Trigger Exit");
        GUIManager.GuiInstance.snow.SetActive (false);
    }

}

}

Programmer
  • 121,791
  • 22
  • 236
  • 328
Aqib Nawaz
  • 13
  • 1
  • 5

1 Answers1

1

In UNET, Before performing any operation into non-player object you have to first acquire its authority. After getting the authority, you will become able to perform an action that will sync across network.

For details You can check my this answer.

Muhammad Faizan Khan
  • 10,013
  • 18
  • 97
  • 186