Question by
JustRoss · Jan 07, 2019 at 12:34 AM ·
networkingunity 2drpccommand
[Command] Not being called at all
Hello! Could anyone point me in the right direction why CmdUpdateZap(bool _bool) might not be called?
This script is on a prefab that I have attached to the player prefab. Both the player prefab and the prefab this is on are network identities with local authority.
The 'zapEnabled' boolean is being controlled from a main script on the player and that all works - the effects do play and the collider does activate, however for some reason neither CmdUpdateZap() or RpcUpdateZap() are being called as I am not getting the debug messages. Please help! And thank you in advance!
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
using UnityEngine.Networking;
public class Zap : NetworkBehaviour {
public int level;
ParticleSystem[] ps;
BoxCollider2D boxCollider;
public bool zapEnabled = false;
// Use this for initialization
void Start () {
ps = GetComponentsInChildren<ParticleSystem>();
boxCollider = GetComponent<BoxCollider2D>();
}
// Update is called once per frame
void Update () {
if (zapEnabled == true)
{
foreach (ParticleSystem _ps in ps)
{
_ps.enableEmission = true;
}
boxCollider.enabled = true;
CmdUpdateZap(true);
}
else if (zapEnabled == false)
{
foreach (ParticleSystem _ps in ps)
{
_ps.enableEmission = false;
}
boxCollider.enabled = false;
CmdUpdateZap(false);
}
}
[Command]
void CmdUpdateZap(bool _bool)
{
Debug.Log("Server recieved command to update a zap to " + _bool);
if (_bool == true)
{
foreach (ParticleSystem _ps in ps)
{
_ps.enableEmission = true;
}
boxCollider.enabled = true;
}
else if (_bool == false){
foreach (ParticleSystem _ps in ps)
{
_ps.enableEmission = false;
}
boxCollider.enabled = false;
}
RpcUpdateZap(_bool);
}
[ClientRpc]
void RpcUpdateZap(bool _bool)
{
Debug.Log("Client recieved an RPC call to update a zap to " + _bool);
if (_bool == true)
{
foreach (ParticleSystem _ps in ps)
{
_ps.enableEmission = true;
}
boxCollider.enabled = true;
}
else if (_bool == false)
{
foreach (ParticleSystem _ps in ps)
{
_ps.enableEmission = false;
}
boxCollider.enabled = false;
}
}
void OnTriggerEnter2D(Collider2D col)
{
Debug.Log(col.name);
if (col.gameObject.tag == "Unit")
{
Debug.Log("Did " + level * 2 + " damage! BAM");
}
}
}
Comment
Your answer
Follow this Question
Related Questions
Photon RPC 2 Answers
How to command dedicated server 1 Answer
Question to RPC and Command (Unet) 0 Answers