photonView.IsMine
Hi there,
I feel kinda dumb asking this but I think that "photonView.IsMine" is not working, at least is not working on my project. I'm following step by step the tutorial from the documentation and I got stuck in this part when you check the others beams and check the player health. When I get to add it into OnTriggerEnter and OnTriggerStay method I get an error, it shows like if I wrote it wrong. I've been looking at the whole script for two hours and I can't find what's wrong.
I would really appreciate it if you could help me.
Here's a link to a screenshot I took from the script (I couldn't figure out how to upload a picture here so I uploaded to Google Drive):
https://drive.google.com/open?id=1JXYEKxstXN2HkxptSvGKr2m03sXTM2_j
Also, I'll leave de PlayerManager script I have:
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
using Photon.Pun;
using Photon.Realtime;
namespace Com.JmJdProd.Murderer
{
public class PlayerManager : MonoBehaviour
{
#region Private Fields
[Tooltip("The Beams GameObject to control")]
[SerializeField]
private GameObject beams;
//True, when the user is firing
bool IsFiring;
#endregion
#region Public Fields
[Tooltip("The current Health of our player")]
public float Health = 1f;
#endregion
#region MonoBehaviour CallBacks
///
/// MonoBehaviour method called on GameObject by Unity during early initialization phase.
///
void Awake()
{
if (beams == null)
{
Debug.LogError("Missing Beams Reference.", this);
}
else
{
beams.SetActive(false);
}
}
void OnTriggerEnter(Collider other)
{
if (PhotonView.IsMine)
{
return;
}
if (!other.name.Contains("Beam"))
{
return;
}
Health -= 0.1f;
}
void OnTriggerStay(Collider other)
{
if (!photonView.IsMine)
{
return;
}
if (!other.name.Contains("Beam"))
{
return;
}
Health -= 0.1f * Time.deltaTime;
}
void Update()
{
if (Health <= 0f)
{
GameManager.Instance.LeaveRoom();
}
ProcessInputs();
// trigger Beams active state
if (beams != null && IsFiring != beams.activeInHierarchy)
{
beams.SetActive(IsFiring);
}
}
#endregion
#region Custom
void ProcessInputs()
{
if (Input.GetButtonDown("Fire1"))
{
if (!IsFiring)
{
IsFiring = true;
}
}
if (Input.GetButtonUp("Fire1"))
{
if (IsFiring)
{
IsFiring = false;
}
}
}
#endregion
}
}
I feel kinda dumb asking this but I think that "photonView.IsMine" is not working, at least is not working on my project. I'm following step by step the tutorial from the documentation and I got stuck in this part when you check the others beams and check the player health. When I get to add it into OnTriggerEnter and OnTriggerStay method I get an error, it shows like if I wrote it wrong. I've been looking at the whole script for two hours and I can't find what's wrong.
I would really appreciate it if you could help me.
Here's a link to a screenshot I took from the script (I couldn't figure out how to upload a picture here so I uploaded to Google Drive):
https://drive.google.com/open?id=1JXYEKxstXN2HkxptSvGKr2m03sXTM2_j
Also, I'll leave de PlayerManager script I have:
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
using Photon.Pun;
using Photon.Realtime;
namespace Com.JmJdProd.Murderer
{
public class PlayerManager : MonoBehaviour
{
#region Private Fields
[Tooltip("The Beams GameObject to control")]
[SerializeField]
private GameObject beams;
//True, when the user is firing
bool IsFiring;
#endregion
#region Public Fields
[Tooltip("The current Health of our player")]
public float Health = 1f;
#endregion
#region MonoBehaviour CallBacks
///
/// MonoBehaviour method called on GameObject by Unity during early initialization phase.
///
{
if (beams == null)
{
Debug.LogError("Missing Beams Reference.", this);
}
else
{
beams.SetActive(false);
}
}
void OnTriggerEnter(Collider other)
{
if (PhotonView.IsMine)
{
return;
}
if (!other.name.Contains("Beam"))
{
return;
}
Health -= 0.1f;
}
void OnTriggerStay(Collider other)
{
if (!photonView.IsMine)
{
return;
}
if (!other.name.Contains("Beam"))
{
return;
}
Health -= 0.1f * Time.deltaTime;
}
void Update()
{
if (Health <= 0f)
{
GameManager.Instance.LeaveRoom();
}
ProcessInputs();
// trigger Beams active state
if (beams != null && IsFiring != beams.activeInHierarchy)
{
beams.SetActive(IsFiring);
}
}
#endregion
#region Custom
void ProcessInputs()
{
if (Input.GetButtonDown("Fire1"))
{
if (!IsFiring)
{
IsFiring = true;
}
}
if (Input.GetButtonUp("Fire1"))
{
if (IsFiring)
{
IsFiring = false;
}
}
}
#endregion
}
}
0
Comments
-
I have the same issue. People have been asking about this over and over. Could someone address it?
0 -
This question has been answered, but for whatever reason, they don't update the tutorial. Remove the check for photonview.ismine and just ProcessInputs(); You will add the check in the next section properly.
0 -
Hi @Persian99, @jwehr,
Thank you for choosing Photon!
Documentation page update done.
Sorry for the inconvenience.
Thanks you for your patience and understanding.
0