- Home /
Unity Character Move Over PhotonNetworking
So I have a player Health script that has a function that is called to retract the health points of the player the script is on.
Thus PlayerOnes health script will track his health PlayerTwo's will track his.
When a bullet collision is detected it calls takedamage from the health script of the collided object. Thus it takes damage, it works with NPC but not networked players.
If P1 shoots ---> P2 twice it will take the damage 50 , and then 50 again, but it doesn't output your dead, and it doesn't register hits on the player meaning it won't take damage because the players hitpoints are 0, thus it just detects the collision and does nothing. But it will not do the rest of the code and transform the players position etc. The thing is the script runs on both computers and collision is detected on both so regardless of it being networked it should detect it and execute the update and register it.
Any ideas?
using UnityEngine;
using System.Collections;
public class Health : MonoBehaviour {
public float hitPoints = 100;
public Transform explosionPrefab;
private Transform explosion;
public float currentHitPoints;
SpawnSpot[] spawnSpots;
private bool dead = false;
GameObject deadZone;
// Use this for initialization
void Start () {
currentHitPoints = hitPoints;
spawnSpots = GameObject.FindObjectsOfType<SpawnSpot> ();
}
// Update is called once per frame
void Update () {
if (currentHitPoints <= 0) {
deadZone = GameObject.FindWithTag("DeadZone");
gameObject.transform.position = deadZone.transform.position;
dead = true;
Instantiate(explosionPrefab, gameObject.transform.position, gameObject.transform.rotation);
}
if (dead) {
if (currentHitPoints <= 0){
//if (gameObject.transform.name == "Player"{
SpawnSpot mySpawnSpot = spawnSpots [Random.Range (0, spawnSpots.Length)];
Debug.Log (gameObject.transform.name + "Your DEAD");
if (Input.GetButtonDown ("Fire1")) {
gameObject.transform.position = mySpawnSpot.transform.position;
currentHitPoints = 100;
}
}
}
}
[RPC]
public void TakeDamage(float amt){
currentHitPoints -= amt;
Debug.Log ("taking damage");
if (currentHitPoints <= 0) {
//this used to call a die function but instead i put it in the update so its always looking to see if a player is dead or not.
}
}