2016-08-17 5 views
1

私は、ユニティでロケットリーグタイプのゲームを作ろうとしていました。ノンプレイヤーオブジェクトからすべてのプレイヤーの得点を計算する方法

私はプレイヤーとプレイエリアですべてを持っています。選手はネットワークスポンサーによって生まれ、ボールはチュートリアルの敵のようなボールスポンサーによって生まれます。ボールが衝突し、ボールの位置がリセットされるという2つの目標があります。しかし、どのようにしてゴールがあるのか​​をプレイヤーに伝えることはできますか?私はどこからでも見てきましたが、ボールからプレーヤーに情報を渡す方法の良い例を見つけることはできません。私は、すべてのプレーヤーのカメラに表示され、スコアをカウントする2つのvariablersを使用するテキストUIを持っているので、私は何とかそれらがゴールに衝突するときにボールを介して変数を増加させることです。

RPCコールは、私が理解しているように、プレイヤーオブジェクト間でしか動作せず、ボールとプレーヤーの間でそれらを使用しようとすると、syncvarsが機能していないようで、誰かがヒントを持っているか、

EDIT:同じ問題を抱えている人向けです。私はscoreManagerオブジェクトを作成し、それがsyncvarsとしてスコアを持たせることでこれを解決しました、そして、私はscoremanagerコンポーネントとそのスクリプトを得て、ボールでスコアを増やし、プレーヤーのためにそれを得てスコアを得ました。

答えて

1

についての説明があります。私はscoreManagerオブジェクトを作成し、それがsyncvarsとしてスコアを持たせることでこれを解決しました、そして、私はscoremanagerコンポーネントとそのスクリプトを得て、ボールでスコアを増やし、プレーヤーのためにそれを得てスコアを得ました。

1

あなたがUNetを使用していると仮定します。これは、健康の同期を伴うチュートリアルです。

[SyncVar(hook = "OnChangeHealth")] 
    public int currentHealth = maxHealth; 

    void OnChangeHealth(int cH) 
    { 
     healthBar.value = (float)cH/maxHealth; 
    } 

ここで、healthBarはスライダーです。

ここでは、同じ問題を持つ人々のために[ClientRPC][Command] http://docs.unity3d.com/Manual/UNetActions.html

+0

私はこれを試しましたが、プレイヤーに何も変更を加えなかったので、私はそれをもう一度見なければなりませんが、私がそれを理解したように、敵とプレイヤーは同じ健康スクリプトボールとプレイヤーは同じスクリプトを共有していません – Morti

+0

私のテストゲームでは(このチュートリアルに基づいて)プレイヤーだけがヘルススクリプトを持っています。それでも、あなたのクライアントアプリケーションは同じUIとスクリプトを持っていると思うので、同じです。 'NetworkBehaviour'からあなたのスクリプトを継承しますか? – Krajca

+0

はい、私はボールを与えることも試みましたlocalclientauthority – Morti

関連する問題