Question by
Pufferfish64920 · May 23, 2020 at 07:35 PM ·
3dfpsmultiplayer-networking
Having issues with Photon
I have a shooting script and a player health script when I shoot another player the health goes down on my screen and not theirs. the shooting script and the player health script are local.
Shooting Script
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
using UnityEngine.UI;
public class Shoot : MonoBehaviour
{
public Rigidbody bullet;
public GameObject Bullet;
public GameObject Camera;
public GameObject HitMarker;
public GameObject DeathMarker;
public Vector2 vct2;
public float Sensitivity = 100F;
public float mouseX;
public float mouseY;
public float range = 1000F;
public RaycastHit hit;
// Start is called before the first frame update
void Start()
{
Bullet = GameObject.Find("Bullet");
Camera = GameObject.Find("Main Camera");
HitMarker = GameObject.Find("HitMarker");
DeathMarker = GameObject.Find("DeathMarker");
bullet = Bullet.GetComponent<Rigidbody>();
}
// Update is called once per frame
void Update()
{
//DeathMarker.SetActive(false);
//HitMarker.SetActive(false);
mouseX = Input.GetAxis("Mouse X") * Sensitivity * Time.deltaTime;
mouseY = Input.GetAxis("Mouse Y") * Sensitivity * Time.deltaTime;
if (Input.GetMouseButtonDown(0))
{
if (Physics.Raycast(Camera.transform.position, Camera.transform.forward, out hit, range))
{
PlayerHealth health = hit.transform.GetComponent<PlayerHealth>();
if (health != null)
{
HitMarker.SetActive(true);
health.TakeDamage(10);
Debug.Log("Hit");
Invoke("deactivate", 2);
Invoke("DeathCheck", 0.1F);
}
}
}
}
public void deactivate()
{
HitMarker.SetActive(false);
DeathMarker.SetActive(false);
}
public void DeathMarker1()
{
DeathMarker.SetActive(true);
Debug.Log("HitTest");
deactivate();
}
public void DeathCheck()
{
PlayerHealth health = hit.transform.GetComponent<PlayerHealth>();
if (health = null)
{
DeathMarker1();
}
}
}
Health Script
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
using UnityEngine.UI;
using UnityEngine.SceneManagement;
using Photon.Pun;
public class PlayerHealth : MonoBehaviour
{
public GameObject deathScreen;
public GameObject returnButton;
public float health = 100;
public bool IsDead = false;
public GameObject Health;
public Slider HealthSlider;
// Start is called before the first frame update
void Start()
{
deathScreen = GameObject.Find("DeathScreen");
returnButton = GameObject.Find("ReturnToLobby");
returnButton.SetActive(false);
deathScreen.SetActive(false);
Health = GameObject.Find("Canvas/Health/HealthBar/Slider");
HealthSlider = Health.GetComponent<Slider>();
}
// Update is called once per frame
public void TakeDamage(float amount)
{
health -= 10;
Debug.Log("hit");
}
void Update()
{
if (health <= 0 && IsDead == false)
{
Death();
IsDead = true;
}
}
public void Death()
{
//deathScreen.SetActive(true);
//returnButton.SetActive(true);
returnButton.SetActive(true);
deathScreen.SetActive(true);
Cursor.lockState = CursorLockMode.None;
}
public void ReturnToLobby()
{
SceneManager.LoadScene(0);
//PhotonNetwork.LeaveRoom();
//IsDead = false;
Debug.Log("Left");
}
}
Comment
Your answer
Follow this Question
Related Questions
Semaphore.waitforsignal causes slow framerate 1 Answer
How to create a timer for reload? 1 Answer
Raycast over Photon 0 Answers
Problema multiplayer al agregar vehiculo 0 Answers
How to slide in a fps game 1 Answer