問題タブ [unity3d-unet]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
unity3d - Unity3d での UNET 経由の同期の問題
ネットワーク経由でプレーヤーの位置と回転を同期しようとしています。部分的に機能しています。
ホストとリモートの 2 人のプレイヤーがいます。ホストの画面を見ると、ローカル プレーヤーとネットワーク プレーヤーの正しい場所が表示されます。リモートでは、ローカルの正しい場所が表示されますが、ネットワーク プレーヤーは表示されません。
これは私の同期スクリプトです:
アイデアは、このスクリプトを を使用して任意のオブジェクトに投げることができRigidbody
、ローカル プレーヤーをソースとして、ネットワーク経由で自動的に同期できるようにすることです。
リモート接続上にあるのはなぜですか? ホスト上に同期されたオブジェクトが表示されません。それらはすべて正しく表示されます。
c# - プレイヤーが移動中に弾丸と衝突する - Unity UNET
設定: 初めてマルチプレイヤー ゲームを作成したところ、奇妙な問題が発生しました。プレイヤーが弾丸を撃って殺し合う戦車ゲームです
問題: クライアントが移動中に発砲すると、弾丸が少し遅れてスポーンするように見え、プレイヤーが弾丸と衝突します。
問題は、プレイヤー自体がローカルであり、弾丸がネットワーク上で生成されていることです (遅延の原因となっています)。
注: ホスト プレーヤーにはこの問題はありません。したがって、これは何らかの形でネットワークに関連しています。
弾丸をクライアント プレーヤーと同期するにはどうすればよいですか?
unity3d - UNet プレーヤー コントローラーの問題
UNET で動作するはずのプレーヤー コントローラーがあります。ゲームに参加しているリモートプレイヤーは自分のキャラクターを制御できないため、何かを理解する必要はありません.
ホストしているローカル プレイヤーは、自分のキャラクターをうまくコントロールできます。
基本的に、これが機能していると私が思うUpdate
方法は、ローカルプレーヤーでキーを押すことができるということです。これらのキープレスCommand
は、同期されたブール値が設定されているサーバーに s を発行します。
サーバーではFixedUpdate
、設定されたブール値に基づいて Rigidbody を移動します。プレーヤー オブジェクトには NetworkTransform があるため、サーバーが行うすべての動きをクライアントに送り返す必要があります。
networking - Unity3d 5 ネットワーキング、UNET HLAPI と LLAPI の比較
以前はレーシング ゲームをしていましたが、1 年前に休憩を取りました (プロジェクトは unity 4 で行われました)。そのプロジェクトで再起動したため、unity 4 ネットワークではうまく機能しないため、ネットワークを再実装する必要があります。UNET、HLAPI、および LLAPI を使用して実装する方法が 2 つあります。同期は私にとって非常に重要であるため、LLAPI はより優れた柔軟なものである必要がありますが、それを使用する努力が必要かどうか専門家に尋ねるためにここにいます。または HLAPI で十分な結果が得られます。
unity3d - オブジェクトが常に @ 0.0 に配置され、元々スポーンされていないのはなぜですか?
次のコードを使用してスポーンします。
GameObject goX = Resources.Load ("Apple") as GameObject; GameObject goY = Resources.Load ("Orange") as GameObject; GameObject goZ = Resources.Load ("Banana") as GameObject;
Spawn1 - Spawn4 は 0.0 ではありません
オブジェクトが生成されると、正しい位置に生成されますが、すぐに 0.0 の位置に移動します。
これは、オブジェクトで使用する同期スクリプトです。NetworkTransform コンポーネントを使用すると機能するため、問題はスクリプトにあると思います。ただし、 NetworkTransform はいくつかの動きを見逃しているため、スクリプトで同期したい:
c# - Unity3D。権限のないオブジェクトに対してコマンドを送信しようとしています
現在のゲーム状態 (誰のターンかなど) を制御するゲーム マネージャーが必要なマルチプレイヤー ターンベースの戦略ゲームがあります。このマネージャーはすべてのクライアントに共通である必要があり、その状態はサーバー上で同期される必要があります。
これを行う方法は次のとおりです。ゲームマネージャーオブジェクトはNetworkBehaviourであり、ローカルプレーヤー権限でもサーバー権限でもないNetworkIdentityを持っています。カスタム NetworkManager を作成し、クライアント接続でゲーム マネージャーを生成し、それがサーバーであるかどうかもテストします。コードは次のとおりです。
サーバー上で実行すると、正常に動作し、クライアント上にインスタンスが作成され、サーバーからクライアントへ変数が同期されます。しかし、クライアントからコマンドを実行しようとすると、コマンドは無視され、次の警告がスローされます。
権限のないオブジェクトに対してコマンドを送信しようとしています。UnityEngine.Networking.NetworkBehaviour:SendCommandInternal(NetworkWriter, Int32, String)
このゲーム マネージャーは、プレイヤーのスポーンを担当する必要があるため、どのプレイヤーよりも先にスポーンされることに注意してください。私は何を間違っていますか?
scripting - クライアントの子オブジェクトの UNET Change Texture
複数の手法を試しましたが、まだ結果が得られません。この 投稿は有望に思えましたが、まだ同じ問題があります。ホストは色を変更できますが、クライアント プレイヤーは変更できません。コードは次のようになります。
どんな提案も役に立ちます。前もって感謝します。
c# - Unet を使用して特定の場所にプレイヤーをスポーンする
2 つの異なる場所で2 人のプレイヤー (ホストとクライアント)を生成しようとしています。
プレーヤーはネットワークマネージャーによって自動的に生成されるため、これを行う方法がわかりません。
私は次のことを試しましたが、ひどく失敗しました:(。
特定の場所にプレイヤー オブジェクトをスポーンするにはどうすればよいですか?