2017-10-22 12 views
-2

他のプレイヤーが死亡したときにそのプレイヤー1または2が表示されるようにC#コードを編集するにはどうすればよいですか?そして、彼らが失った死者を見せてください。Unity C#シンプル・マルチプレイヤー・ゲーム終了

PlayerControllerスクリプト

using System.Collections.Generic; 

using UnityEngine; 

using UnityEngine.Networking; 

namespace S3 
{ 
public class PlayerController : NetworkBehaviour { 

    public GameObject bulletPrefab; 
    public Transform bulletSpawn; 

// Update is called once per frame 
void Update() 
{ 
    if (!isLocalPlayer) { 
     return; 
    } 

    float x = Input.GetAxis ("Horizontal") * Time.deltaTime * 150.0f; 
    float z = Input.GetAxis ("Vertical") * Time.deltaTime * 3.0f; 

    transform.Rotate (0, x, 0); 
    transform.Translate (0, 0, z); 

     if (Input.GetKeyDown (KeyCode.Space)) 
     { 
      CmdFire(); 
     } 
} 

    [Command] 
    void CmdFire() 
    { 
     GameObject bullet = (GameObject) Instantiate(bulletPrefab, bulletSpawn.position, bulletSpawn.rotation); 

     bullet.GetComponent<Rigidbody>().velocity = bullet.transform.forward * 6.0f; 

     NetworkServer.Spawn(bullet); 

     Destroy (bullet, 2); 
    } 

    public override void OnStartLocalPlayer() 
     { 
    GetComponent<MeshRenderer>().material.color = Color.blue; 
    } 


} 
} 

健康スクリプト

using System.Collections; 
using UnityEngine; 
using UnityEngine.UI; 
using UnityEngine.Networking; 

namespace S3 
{ 
    public class Health : NetworkBehaviour { 

     public const int maxHealth = 100; 
     [SyncVar (hook = "OnChangeHealth")]public int currentHealth = maxHealth; 
     public RectTransform healthbar; 

     public void TakeDamage(int amount) 
     { 
     if (!isServer) 
     { 
      return; 
     } 

     currentHealth -= amount; 
     if (currentHealth <= 0) 
     { 
      currentHealth = maxHealth; 
      RpcRespawn(); 
     } 
    } 

    void OnChangeHealth(int health) 
    { 
     healthbar.sizeDelta = new Vector2(health * 2, healthbar.sizeDelta.y); 
    } 


    [ClientRpc] 
    void RpcRespawn() 
    { 
     if(isLocalPlayer) 
     { 
      transform.position = Vector3.zero; 
     } 
    } 
    } 
} 

これはcodeaspğlasdlişsadlşisadlşiadsilşdslaişdlasişlişdsacdlişsadilşaLDİŞaslişÖDASİÖŞLDÖİLSAŞDöliasödilascöildaiölşsdöiaşsdöilasödilasiöldasöildasöildöilasdöilaöildöildasöildaöilsdöilasdölasdöliasölidasöildsaöildsöiladiösladöilsadöilsadöilasdiölsadiölsaöidlsaöildsöidiösladiölsadiölsadöilasöild

です
+0

STED OG絵は彼らが「の代わりに」意味 –

+0

を何を意味しています。画像へのリンクの代わりにコードを投稿するだけです。 – Kasperi

+0

thats私ができること –

答えて

0

勝利したプレーヤーのnetIDを使用してサーバーにコマンドを送信し、netIDが一致する場合はRPCをチェックインすることができます。
ローカルプレーヤーのnetIDと一致する場合、彼は勝者です。そうでなければ、彼は失う。以下のコードをテストしていませんが、動作するはずです:

[Command] 
    public void CmdGameWon() 
    { 
     RpcGameEnd(this.netId); 
    } 

    [ClientRpc] 
    public void RpcGameEnd(NetworkInstanceId nid) 
    { 
     if(this.isLocalPlayer && this.netId==nid){ 
      //Process win here 
     }else{ 
      //Process lose here 
     } 
    } 
関連する問題