- Home /
Identifying local player issue
I am making a multiplayer game and I am trying to have it so the local player cannot shoot himself, but can still shoot the client players. So I basically assigned the local player to have a tag of "Local Player", and a layer of "Local Player", and for the clients to have a tag and layer as "Remote Player". In the hierarchy it seems to be assigning the tag and layers correctly, but only the player that is lan host can actually do damage to other players, while clients cannot do damage to the host. Any help is appreciated and I will add my scripts down below.
// I try to assign the local and non local players.
using System.Collections;
using System.Collections.Generic;
using UnityEngine.Networking;
using UnityEngine;
[RequireComponent(typeof(PlayerMotor))]
public class PlayerController : NetworkBehaviour {
public AudioListener listener;
[SerializeField]
[SyncVar]
public float speed = 5f;
private PlayerMotor motor;
[SerializeField]
private float lookSensitivity = 3f;
[SerializeField]
private Camera cam;
// Use this for initialization
void Start () {
motor = GetComponent<PlayerMotor> ();
cam = GetComponent<PlayerMotor> ().cam;
if (!isLocalPlayer) {
cam.enabled = false;
listener.enabled = false;
gameObject.tag = "RemotePlayer";
gameObject.layer = LayerMask.NameToLayer ("RemotePlayer");
gameObject.GetComponent<shootSpell> ().enabled = false;
}
}
void Update () {
if (!isLocalPlayer) {
return;
}
MovePlayer ();
}
}
// This is my damage script
using System.Collections;
using System.Collections.Generic;
using UnityEngine.Networking;
using UnityEngine;
public class hitDetection : NetworkBehaviour {
public int damage;
// Use this for initialization
void Start () {
}
// Update is called once per frame
void Update () {
}
void OnTriggerEnter (Collider col) {
if (col.GetComponent<Collider>().tag == "LocalPlayer") {
Physics.IgnoreLayerCollision (LayerMask.NameToLayer ("Spell"), LayerMask.NameToLayer ("LocalPlayer"));
}
if (col.GetComponent<Collider>().tag == "RemotePlayer") {
var hit = col.gameObject;
var health = hit.GetComponent<Health> ();
if (health != null) {
health.TakeDamage (damage);
}
Destroy (gameObject);
}
}
}
Your answer
Follow this Question
Related Questions
Target = NetworkedMe 1 Answer
Networking Question 1 Answer
How to display player ID on client sides? 1 Answer
Assigning Player Numbers 0 Answers
How to check when a new client/local player is loaded? 1 Answer