hello everybody,
i am making a multiplayer fps whit doors, but the doors only works with one person. im yousing pun networking. i hate tutorials. can someone please give me some scripts or tips?
thanks a lot,
Rens:)
hello everybody,
i am making a multiplayer fps whit doors, but the doors only works with one person. im yousing pun networking. i hate tutorials. can someone please give me some scripts or tips?
thanks a lot,
Rens:)
Use an RPC to open the door.
//Set pv so it stands for the photon-view component
PhotonView pv = PhotonView.Get(this);
//Call the RPC whenever you want to open the door
pv.RPC("openDoor, PhotonTargets.All null);
[RPC]
void openDoor()
{
//Open the door here
}
Thanks a lot!
mm, tryed it out but he still doesnt work, he keeps giving the error unexpected symbol ( and ). this is my script at the moment:
using UnityEngine;
using System.Collections;
public class open_door : MonoBehaviour
{
PhotonView pv = PhotonView.Get(this);
public float smooth = (float)2.0;
public float DoorOpenAngle = (float)110.0;
public float DoorCloseAngle = (float)0.0;
public bool open = false;
public bool enter = false;
public string defined_key = "tab";
rv.RPC ("OnTriggerEnter", "OnTriggerExit", PhotonTargets.All);
// Update is called once per frame
void Update ()
{
if(open == true)
{
var target = Quaternion.Euler (transform.localRotation.x, DoorOpenAngle, transform.localRotation.z);
// Dampen towards the target rotation
transform.localRotation = Quaternion.Slerp(transform.localRotation, target,
Time.deltaTime * smooth);
}
if(open == false)
{
var target1 = Quaternion.Euler (transform.localRotation.x, DoorCloseAngle, transform.localRotation.z);
// Dampen towards the target rotation
transform.localRotation = Quaternion.Slerp(transform.localRotation, target1,
Time.deltaTime * smooth);
}
if(enter == true)
{
if(Input.GetKeyDown(defined_key))
{
open = !open;
}
}
}
//Activate the Main function when player is near the door
[RPC]
void OnTriggerEnter(Collider other)
{
if (other.gameObject.tag == "Player")
{
//Debug.Log("Trigger Enter");
(enter) = true;
}
}
//Deactivate the Main function when player is go away from door
[RPC]
void OnTriggerExit (Collider other)
{
if (other.gameObject.tag == "Player")
{
//Debug.Log("Trigger Exit");
(enter) = false;
}
}
}
You put ‘rv’ before the RPC instead of ‘pv’ which you defined as the photon view. Also you need to call the RPC when you want the door to open.
still keeps giving the error :Assets/DesertFortressPack/Scripts/open_door.cs(15,16): error CS1519: Unexpected symbol (' in class, struct, or interface member declaration and Assets/DesertFortressPack/Scripts/open_door.cs(15,16): and this error: Assets/DesertFortressPack/Scripts/open_door.cs(15,69): error CS1519: Unexpected symbol
)’ in class, struct, or interface member declaration
void OnTriggerEnter(Collider other)
{
if (other.gameObject.tag == "Player")
{
pv.RPC("openDoor", PhotonTargets.All, null);
}
}
void OnTriggerExit(Collider other)
{
if (other.gameObject.tag == "Player")
{
pv.RPC("closeDoor", PhotonTargets.All, null);
}
}
[RPC]
void closeDoor()
{
//Debug.Log("Trigger Exit");
(enter) = false;
}
[RPC]
void openDoor()
{
//Debug.Log("Trigger Enter");
(enter) = true;
}
ok, think that worked, but now he gives me he message: Assets/DesertFortressPack/Scripts/open_door.cs(10,40): error CS0027: Keyword `this’ is not available in the current context. What dit i do wrong?
rens
using UnityEngine;
using System.Collections;
public class open_door : Photon.MonoBehaviour
{
PhotonView pv = PhotonView.Get(this);
public float smooth = (float)2.0;
public float DoorOpenAngle = (float)110.0;
public float DoorCloseAngle = (float)0.0;
public bool open = false;
public bool enter = false;
public string defined_key = "tab";
void OnTriggerEnter(Collider other)
{
if (other.gameObject.tag == "Player")
{
Debug.Log("triggerenter");
pv.RPC("openDoor", PhotonTargets.All, null);
(enter) = true;
}
}
void OnTriggerExit(Collider other)
{
if (other.gameObject.tag == "Player")
{
Debug.Log("triggerexit");
pv.RPC("closeDoor", PhotonTargets.All, null);
(enter) = false;
}
}
[RPC]
void closeDoor()
{
if(enter == true)
{
if(Input.GetKeyDown(defined_key))
{
open = !open;
}
}
if(open == true)
{
var target = Quaternion.Euler (transform.localRotation.x, DoorOpenAngle, transform.localRotation.z);
// Dampen towards the target rotation
transform.localRotation = Quaternion.Slerp(transform.localRotation, target, Time.deltaTime * smooth);
}
}
[RPC]
void openDoor()
{
if(open == false)
{
var target1 = Quaternion.Euler (transform.localRotation.x, DoorCloseAngle, transform.localRotation.z);
// Dampen towards the target rotation
transform.localRotation = Quaternion.Slerp(transform.localRotation, target1,
Time.deltaTime * smooth);
}
}
}