Unity3d 当玩家射击时,它正在失去生命
我正在制作一个多人游戏2D,当我的玩家开枪时,枪上也有一个对撞机,这影响了他的生活,我不知道为什么。可能是因为当目标受伤时有RPCtarget。但我不知道要改变什么,只是为了影响游戏中的其他玩家,而不是我的。我能用什么来代替一切 使用系统集合; 使用System.Collections.Generic; 使用UnityEngine; 使用UnityStandardAssets.CrossPlatformInput; 使用光子双关语; 使用光子。实时; 利用光子; 使用UnityEngine.UI; 公共类特征:单双关,不可观察 { 刚体2d rb; 浮动dirX; [序列化字段] 浮动速度=5f,跳跃力=400f,子弹速度=500f; [SerializeField]私有浮点运行状况=100; [序列化字段]专用滑块; [字段]专用梯度; [序列化字段]私有图像填充; 公共刚体2D公告; 矢量3局部尺度; 公共死亡调查机构; 公共交通; 公共刚体2D子弹; //用于初始化 无效启动 { localScale=transform.localScale; rb=GetComponent; 如果是photonView.IsMine { myCounts=FindObjectOfType; } 其他的 { } } 公共卫生 { 获取{return health;} 设置 { 健康=价值; slider.value=健康; //fill.color=gradient.Evaluateslider.normalizedValue; } } 私有无效OnTriggerInter2dr2D列 { 如果col.gameObject.CompareTagHurt { 如果是photonView.IsMine { photonView.RPCDamage,RpcTarget.All; } } 如果col.gameObject.tag==加电 { 如果是photonView.IsMine { var powerup=col.GetComponent; 通电,皮卡提斯; } 其他的 { } } 如果col.gameObject.CompareTagBullet { 如果是photonView.IsMine { photonView.RPCDamage,RpcTarget.All; 子弹=子弹; } } 其他的 { } } [扑克牌] 空洞损伤 { 如果运行状况>0 { 健康-=20; }Unity3d 当玩家射击时,它正在失去生命,unity3d,photon,Unity3d,Photon,我正在制作一个多人游戏2D,当我的玩家开枪时,枪上也有一个对撞机,这影响了他的生活,我不知道为什么。可能是因为当目标受伤时有RPCtarget。但我不知道要改变什么,只是为了影响游戏中的其他玩家,而不是我的。我能用什么来代替一切 使用系统集合; 使用System.Collections.Generic; 使用UnityEngine; 使用UnityStandardAssets.CrossPlatformInput; 使用光子双关语; 使用光子。实时; 利用光子; 使用UnityEngine.U
如果健康我认为在这种情况下你并不真的需要RPC 我发现你的角色是不可观察的,我猜,它被添加到了PhotonView。所以它的健康状况会自动同步。 您还可以使用PhotonNetwork实例化项目符号,这意味着它们也将同步并具有PhotonView 所以每个玩家都有所有的同步子弹和其他玩家 这意味着,你们只需检查子弹是否来自其他玩家,并在本地设置伤害。别担心,结果将如下同步:
. . .
private void OnTriggerEnter2D(Collider2D col)
{
if (col.gameObject.CompareTag("Hurt"))
{
// if hurt object is not mine, take damage
if (!col.gameObject.GetPhotonView().isMine)
Damage();
}
if (col.gameObject.tag == "PowerUp")
{
if (photonView.IsMine)
{
var powerup = col.GetComponent<PowerUp>();
powerup.Pickup(this);
}
else
{
}
}
if (col.gameObject.CompareTag("Bullet"))
{
// if bullet is not mine, take damage
if (!col.gameObject.GetPhotonView().isMine)
Damage();
}
else
{
}
}
// no rpc
void Damage()
{
if (!photonView.IsMine) // only player can change his life
return;
if (Health > 0)
{
Health -= 20;
}
if (Health <= 0) // check health status
{
myCounts.RpcRespawn(); //Here you should to call counter
photonView.transform.position = Vector2.zero;
Health = 100;
}
}