我正在制作一个地震风格的游戏,我目前正在实施多人游戏。有跳垫,如果gameObject =("播放器(克隆)")进入触发器,则发送飞行。在unet(Unity Multiplayer)中,当你启动并加入它时,你会将游戏对象创建为"播放器(克隆)"。
现在的问题是,当第二个玩家加入并跳跃跳跃垫(进入触发器)时,没有任何事情发生。但是主持人(玩家1)可以。这是跳过垫识别GameObject的代码。我一直在抨击我的大脑,尝试不同的方法,如" Find.FindGameObjectsWithTag"。
代码:
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
public class JumpPad : MonoBehaviour {
QuakeJump fpsinput;
public float power;
private void OnTriggerEnter(Collider mycollision)
{
{
fpsinput =
GameObject.Find("Player(Clone)").GetComponent<QuakeJump>();
if (mycollision.gameObject.tag == "Player")
{
fpsinput.playerVelocity = transform.up * power;
}
}
}
}
编辑:我还注意到当玩家2跳到打击垫上时,没有任何事情发生在他身上,但是玩家1(主机)在没有踩到打击垫的情况下被发射到空中。
答案 0 :(得分:0)
以下是我的一些发现:
GameObject.Find("Player(Clone)")
只能获得一个游戏对象。所以,如果有2个玩家,你只得到一个,它可能是第一个玩家。但是,我建议使用命令和 RPCClient 来通过网络同步所有玩家。例如,当玩家进入触发器时,将RPC发送给所有客户端,以便他们也在其实例中更新玩家的转换。 请在此深入了解网络教程:https://unity3d.com/learn/tutorials/topics/multiplayer-networking