Skip to main content
added 1484 characters in body
Source Link
using UnityEngine;
using Mirror;
using System.Collections;


public class LaserGun : NetworkBehaviour
{
    public Transform laserTransform;
    public LineRenderer line;

    // Update is called once per frame
    void Update()
    {
        if(isLocalPlayer && Input.GetKeyDown(KeyCode.Q)){
            CmdShoot();
        }
    }

    [Command]
    public void CmdShoot(){
        Ray ray = new Ray(laserTransform.position, laserTransform.forward);
        if(Physics.Raycast(ray, out RaycastHit hit, 100f)){
            print(hit.collider.gameObject);
            if(hit.collider.gameObject.tag == "Player"){
                print("player checked as a player");
                StartCoroutine(Respawn(hit.collider.gameObject));
            }
            print(hit.collider.tag);
            RpcDrawLaser(laserTransform.position, hit.point);
        }
        else{
            RpcDrawLaser(laserTransform.position, laserTransform.position + laserTransform.forward * 100f);
        }
    }

    [Server]
    IEnumerator Respawn(GameObject go){
        print("Player ded");
        NetworkServer.UnSpawn(go);
    Transform newPos = NetworkManager yield return new WaitForSeconds(0.singleton5f);
        NetworkServer.GetStartPositionSpawn(go);
    go.transform.position}

 = newPos.position;  [ClientRpc]
    go.transformvoid RpcDrawLaser(Vector3 start, Vector3 end){
        StartCoroutine(LaserFlash(start, end));
    }

    IEnumerator LaserFlash(Vector3 start, Vector3 end){
        line.rotationSetPosition(0, =start);
 newPos       line.rotation;SetPosition(1, end);
        yield return new WaitForSeconds(1f0.3f);
    NetworkServer    line.SpawnSetPosition(go0, Vector3.zero);
        line.SetPosition(1, Vector3.zero);
    }
}
    [Server]
IEnumerator Respawn(GameObject go){
    print("Player ded");
    NetworkServer.UnSpawn(go);
    Transform newPos = NetworkManager.singleton.GetStartPosition();
    go.transform.position = newPos.position;
    go.transform.rotation = newPos.rotation;
    yield return new WaitForSeconds(1f);
    NetworkServer.Spawn(go);
}
using UnityEngine;
using Mirror;
using System.Collections;


public class LaserGun : NetworkBehaviour
{
    public Transform laserTransform;
    public LineRenderer line;

    // Update is called once per frame
    void Update()
    {
        if(isLocalPlayer && Input.GetKeyDown(KeyCode.Q)){
            CmdShoot();
        }
    }

    [Command]
    public void CmdShoot(){
        Ray ray = new Ray(laserTransform.position, laserTransform.forward);
        if(Physics.Raycast(ray, out RaycastHit hit, 100f)){
            print(hit.collider.gameObject);
            if(hit.collider.gameObject.tag == "Player"){
                print("player checked as a player");
                StartCoroutine(Respawn(hit.collider.gameObject));
            }
            print(hit.collider.tag);
            RpcDrawLaser(laserTransform.position, hit.point);
        }
        else{
            RpcDrawLaser(laserTransform.position, laserTransform.position + laserTransform.forward * 100f);
        }
    }

    [Server]
    IEnumerator Respawn(GameObject go){
        print("Player ded");
        NetworkServer.UnSpawn(go);
        yield return new WaitForSeconds(0.5f);
        NetworkServer.Spawn(go);
    }

    [ClientRpc]
    void RpcDrawLaser(Vector3 start, Vector3 end){
        StartCoroutine(LaserFlash(start, end));
    }

    IEnumerator LaserFlash(Vector3 start, Vector3 end){
        line.SetPosition(0, start);
        line.SetPosition(1, end);
        yield return new WaitForSeconds(0.3f);
        line.SetPosition(0, Vector3.zero);
        line.SetPosition(1, Vector3.zero);
    }
}
edited body
Source Link

I having problems with unity mirror. When respawn IRnumeratorIEnumerator is called, the player respawn but it disconnect from the server, he cant move (only locally) and he cant do commands. this is the respawn code:

    [Server]
IEnumerator Respawn(GameObject go){
    print("Player ded");
    NetworkServer.UnSpawn(go);
    Transform newPos = NetworkManager.singleton.GetStartPosition();
    go.transform.position = newPos.position;
    go.transform.rotation = newPos.rotation;
    yield return new WaitForSeconds(1f);
    NetworkServer.Spawn(go);
}

Any solutions to that problem please?

I having problems with unity mirror. When respawn IRnumerator is called, the player respawn but it disconnect from the server, he cant move (only locally) and he cant do commands. this is the respawn code:

    [Server]
IEnumerator Respawn(GameObject go){
    print("Player ded");
    NetworkServer.UnSpawn(go);
    Transform newPos = NetworkManager.singleton.GetStartPosition();
    go.transform.position = newPos.position;
    go.transform.rotation = newPos.rotation;
    yield return new WaitForSeconds(1f);
    NetworkServer.Spawn(go);
}

Any solutions to that problem please?

I having problems with unity mirror. When respawn IEnumerator is called, the player respawn but it disconnect from the server, he cant move (only locally) and he cant do commands. this is the respawn code:

    [Server]
IEnumerator Respawn(GameObject go){
    print("Player ded");
    NetworkServer.UnSpawn(go);
    Transform newPos = NetworkManager.singleton.GetStartPosition();
    go.transform.position = newPos.position;
    go.transform.rotation = newPos.rotation;
    yield return new WaitForSeconds(1f);
    NetworkServer.Spawn(go);
}

Any solutions to that problem please?

use the right tags.
Link
Christoph Rackwitz
  • 14.1k
  • 4
  • 32
  • 43
Source Link
Loading