- Home /
Networked FPS Error
When I shoot someone in my networked FPS game I Get a error and the player never dies, the error is: Sending RPC failed because 'ApplyDamage' parameter 0 didn't match the RPC declaration. Expected 'System.Int32' but got 'System.Single' so I don't know how to fix this. Please Help!!!!!!!!!!!
Gun Code:
using UnityEngine;
using System.Collections;
public class Gun : MonoBehaviour {
public float shoottime;
public float FireRate = 0.1f;
public float Damage = 25;
public Transform Spawnpoint;
public GameObject ShootParticle;
public AudioClip LoudShot;
public string ShootAnimName;
public Transform Animholder;
public GameObject PrefabHitmarker;
void Start(){
Animholder.animation[ShootAnimName].layer = 2;
Animholder.animation[ShootAnimName].wrapMode = WrapMode.Once;
PrefabHitmarker = Resources.Load("Prefabs/Hitmarker") as GameObject;
}
void Update(){
if(Input.GetButton("Fire1")){
Shoot();
}
}
[RPC]
public void Shoot()
{
if (shoottime <= Time.time)
{
shoottime = Time.time + FireRate;
Animholder.animation.Play(ShootAnimName,PlayMode.StopSameLayer);
audio.PlayOneShot(LoudShot);
Network.Instantiate(ShootParticle,Spawnpoint.position,Spawnpoint.rotation,1);
RaycastHit hit;
if (Physics.Raycast(Spawnpoint.position,Spawnpoint.TransformDirection(Vector3.forward), out hit, 3000))
{
if(hit.collider.tag == "Enemy"){
//Local// hit.transform.SendMessageUpwards("ApplyDamage",Damage , SendMessageOptions.DontRequireReceiver);
}
if(hit.collider.tag == "Player"){
Instantiate(PrefabHitmarker,PrefabHitmarker.transform.position,PrefabHitmarker.transform.rotation);
hit.transform.networkView.RPC("ApplyDamage",RPCMode.All,Damage);
}
}
}
}
}
Player Code:
using UnityEngine;
using System.Collections;
public class PlayerOnlineMain : MonoBehaviour {
public float curHp = 100;
public GameObject NetworkObj;
public AudioClip AudioHit1;
public AudioClip AudioHit2;
void Start () {
//curHp = maxHp;
NetworkObj = GameObject.FindGameObjectWithTag("MainNetwork");
}
void Update () {
if(curHp < 1){
KillPlayer();
}
}
[RPC]
void ApplyDamage(float Damage){
curHp-=Damage;
if(Damage < 99){
audio.PlayOneShot(AudioHit1);
}
if(Damage >= 99){
audio.PlayOneShot(AudioHit2);
}
}
void KillPlayer(){
NetworkObj.SendMessageUpwards("Killed_Player");
}
}
Is there any other rpc visible methods called ApplyDamage
?
Yes plus I made it public(that didn't work), and on update in shoot I change shoot to RPC. that didn't work either.
I doesnt need to be public but the logic that drives that is reflection based and this if you have more than 1 names that, it might be trying to invoke the other
Your answer
Follow this Question
Related Questions
Network fps swap cameras 1 Answer
Problem with camera and gun in FPS game 0 Answers
How to Network Sound? 1 Answer
Photon Chat Change Order 0 Answers
FPS Network 0 Answers