- Home /
Question by
LiOn0X0HeaRt · Jun 24, 2015 at 10:56 AM ·
c#unity5
Rpc function "RpcDamage" called on Client code
This error keeps popping even though the script is working as its supposed to , This is my code
using UnityEngine;
using System.Collections;
using UnityEngine.Networking;
public class HitSimulate : NetworkBehaviour {
public Transform raycastCenter;
public LayerMask playerMask;
public Collider[] overlapCasts;
public float radius=1;
public PlayerGetHit playerGetHit;
public Animator animator;
public bool cast1;
public bool attack1;
[SyncVar]
public GameObject HittedPlayer;
[SyncVar]
public Transform Hitter;
public bool timeTillSendAttackAgain;
public float timeTillSendAttackAgainTimer = 0.2f;
[SyncVar]
public bool attacked;
// Use this for initialization
void Start () {
raycastCenter = transform.FindChild("rayCenter");
playerGetHit = GetComponentInParent<PlayerGetHit>();
animator = GetComponent<Animator>();
}
public void AnimationCast1True()
{
cast1 = true;
}
public void AnimationCast1False()
{
cast1 = false;
animator.SetBool("Attack1",false);
attack1 = false;
}
void Update () {
if(timeTillSendAttackAgain == true)
{
timeTillSendAttackAgainTimer -=Time.deltaTime;
if(timeTillSendAttackAgainTimer <=0)
{
timeTillSendAttackAgain = false;
timeTillSendAttackAgainTimer = 0.2f;
}
}
if(Input.GetMouseButton(0))
{if(isLocalPlayer == true){
animator.SetBool("Attack1",true);
attack1 = true;
}
}
if(cast1 == true){
overlapCasts = Physics.OverlapSphere(raycastCenter.position,radius,playerMask);
}else{
overlapCasts = null;
}
if(overlapCasts != null){
foreach(Collider tmp in overlapCasts)
{
if(tmp != null){
//Debug.DrawLine(transform.position,tmp.gameObject.transform.position,Color.red);
// tmp.GetComponent<PhotonView>().RPC("Damage",PhotonTargets.All,transform.parent.forward);
if(timeTillSendAttackAgain == false){
RpcDamagePlayer(tmp.gameObject,transform);
// RpcDamagePlayer(tmp.gameObject);
timeTillSendAttackAgain = true;
}
}
}
}
}//Update Finish
//
[Command]
void CmdAttackTest(bool attack)
{
attacked = attack;
}
[Command]
void CmdDamagePlayer(GameObject hittedPlayer,Transform hitter)
{
/*HittedPlayer = hittedPlayer;
Hitter = hitter;
CmdAttackTest(true);*/
hittedPlayer.GetComponent<PlayerGetHit>().Damage(transform.forward);
Debug.Log(hittedPlayer.name);
}
[ClientRpc]
void RpcDamagePlayer(GameObject hittedPlayer,Transform hitter)
{
//hittedPlayer= hittedPlayer;
if(!isLocalPlayer){
Debug.Log(hittedPlayer.name);
hittedPlayer.GetComponent<PlayerGetHit>().Damage(transform.forward);
}
// hittedPlayer.GetComponent<PlayerGetHit>().curHealth -=10;
}
}
Comment
Your answer
Follow this Question
Related Questions
Multiple Cars not working 1 Answer
Distribute terrain in zones 3 Answers
Unable to play animation continuously? 1 Answer
How to create a variable jump height 2 Answers
IN-GAME Menu Items 0 Answers