質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.48%
C#

C#はマルチパラダイムプログラミング言語の1つで、命令形・宣言型・関数型・ジェネリック型・コンポーネント指向・オブジェクティブ指向のプログラミング開発すべてに対応しています。

Unity3D

Unity3Dは、ゲームや対話式の3Dアプリケーション、トレーニングシュミレーション、そして医学的・建築学的な技術を可視化する、商業用の開発プラットフォームです。

Unity

Unityは、Unity Technologiesが開発・販売している、IDEを内蔵するゲームエンジンです。主にC#を用いたプログラミングでコンテンツの開発が可能です。

Q&A

0回答

184閲覧

ホストあるいはゲストからの操作のみを受付るようにしたい

mjpaz14f

総合スコア7

C#

C#はマルチパラダイムプログラミング言語の1つで、命令形・宣言型・関数型・ジェネリック型・コンポーネント指向・オブジェクティブ指向のプログラミング開発すべてに対応しています。

Unity3D

Unity3Dは、ゲームや対話式の3Dアプリケーション、トレーニングシュミレーション、そして医学的・建築学的な技術を可視化する、商業用の開発プラットフォームです。

Unity

Unityは、Unity Technologiesが開発・販売している、IDEを内蔵するゲームエンジンです。主にC#を用いたプログラミングでコンテンツの開発が可能です。

0グッド

0クリップ

投稿2017/10/23 19:15

###前提・実現したいこと
unity5.6.1で通信対戦のあるテトリスを作成しています。
Lobby Managerを使用しホストとクライアントが入室し対戦します。

ホストあるいはゲストからのキー操作のみを受付るようにしたいです。
###試したこと・発生している問題

if (isServer == true)を使ってサーバーであるホストからのキー入力のみを受け付けるようにしようとしたところブロックが移動しなくなってしまいました。

c#

1using System.Collections; 2using System.Collections.Generic; 3using UnityEngine; 4using UnityEngine.UI; 5using UnityEngine.Networking; 6using System.Net; 7 8public class Group1 : NetworkBehaviour 9{ 10float lastFall = 0; 11 int falling = 0; 12 public bool isValidGridPos() 13 { 14 foreach (Transform child in transform) 15 { 16 Vector2 v = Grid1.roundVec2(child.position); 17 if (!Grid1.insideBorder(v)) 18 return false; 19 if (Grid1.grid[(int)v.x, (int)v.y] != null && Grid1.grid[(int)v.x, (int)v.y].parent != transform) 20 return false; 21 } 22 return true; 23 } 24 void updateGrid() 25 { 26 for (int y = 0; y < Grid1.h; ++y) 27 for (int x = 0; x < Grid1.w; ++x) 28 if (Grid1.grid[x, y] != null) 29 if (Grid1.grid[x, y].parent == transform) 30 Grid1.grid[x, y] = null; 31 foreach (Transform child in transform) 32 { 33 Vector2 v = Grid1.roundVec2(child.position); 34 Grid1.grid[(int)v.x, (int)v.y] = child; 35 } 36 } 37 void Update() 38 { 39 if (!isValidGridPos()) 40 { 41 SpawnerCs.GameOver(); 42 FindObjectOfType<Grid1>().Save(); 43 objDestroy(); 44 } 45 if (Input.GetKeyDown(KeyCode.LeftArrow)) 46 { 47 if (isServer == true) 48 { 49 transform.position += new Vector3(-1, 0, 0); 50 Vector3 w = transform.position; 51 Debug.Log("RpcPosting left key"); 52 FindObjectOfType<Spawner>().spawnLeft(w); 53 } 54 if (isValidGridPos()) 55 updateGrid(); 56 else 57 transform.position += new Vector3(1, 0, 0); 58            w = transform.position; 59 FindObjectOfType<Spawner>().spawnLeft(w); 60 } 61 if 62 (Input.GetKeyDown(KeyCode.RightArrow)) 63 { 64 transform.position += new Vector3(1, 0, 0); 65 Vector3 w = transform.position; 66 Debug.Log("RpcPosting right key"); 67 FindObjectOfType<Spawner>().spawnLeft(w); 68 if (isValidGridPos()) 69 updateGrid(); 70 else 71 transform.position += new Vector3(-1, 0, 0); 72            w = transform.position; 73 FindObjectOfType<Spawner>().spawnLeft(w); 74 } 75 if (Input.GetKeyDown(KeyCode.UpArrow)) 76 { 77 transform.Rotate(0, 0, -90); 78 if (isValidGridPos()) 79 updateGrid(); 80 else 81 transform.Rotate(0, 0, 90); 82 } 83 if (Input.GetKeyDown(KeyCode.DownArrow) || 84 Time.time - lastFall >= 1) 85 { 86 ; 87 transform.position += new Vector3(0, -1, 0); 88 if (isValidGridPos()) 89 updateGrid(); 90 else { 91 transform.position += new Vector3(0, 1, 0); 92 Grid1.deleteFullRoes(); 93 FindObjectOfType<Spawner>().spawnNext(); 94 enabled = false; 95 } 96 lastFall = Time.time; 97 } 98 if (Input.GetKeyDown(KeyCode.Z) || 99 Time.time - lastFall >= 1) 100 { 101 while (falling < 20) 102 { 103 ; 104 transform.position += new Vector3(0, -1, 0); 105 if (isValidGridPos()) 106 //updateGrid(); 107 falling++; 108 else 109 { 110 transform.position += new Vector3(0, 1, 0); 111 Grid1.deleteFullRoes(); 112 FindObjectOfType<Spawner>().spawnNext(); 113 enabled = false; 114 break; 115 } 116 lastFall = Time.time; 117 } 118 updateGrid(); 119 } 120 } 121} 122 123 124 125

C#

1using System.Collections; 2using System.Collections.Generic; 3using UnityEngine; 4using UnityEngine.UI; 5using UnityEngine.Networking; 6using System.Net; 7using sys=System; 8 9public class Spawner : NetworkBehaviour { 10 public static GameObject ww = null; 11 public GameObject[] groups; //Unityエディタ側でブロックのプレハブをアタッチ 12public void spawnLeft(Vector3 w) 13 { 14 CmdPosting2(w); 15 } 16 17 public void spawnNext() 18 { 19 int i = rnd.Next(0, 6); ; // list.Getindex(); 20 CmdPosting(i); 21 } 22 void Start() 23 { 24 StartCoroutine(Countdown()); 25 rnd = new sys.Random(); 26 } 27 public IEnumerator Countdown() 28 { 29 yield return new WaitForSeconds(1.0f) 30 spawnNext(); 31 }

###補足
二つ目に載せたScriptでコードをこのサイトで正しく表記できていないようなのですが
apawnは正しくはspawnになります

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

fiveHundred

2017/10/24 07:54

疑問点がいくつかあります。 ・エラーは出ていますでしょうか?。エラーが出ているのであれば記載してください。そうでない場合、記載のソースにおかしい箇所(全角スペースが入っているなど)がいくつかあるので、ソースを正確にコピペしてください。 ・SpawnerクラスのCmdPosting2()とCmdPosting()はどうなっておりますでしょうか? ・サーバーの開始はStartHost()とStartServer()のどちらを使っておりますでしょうか? ・NetworkTransformは使っているのでしょうか?
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

まだ回答がついていません

会員登録して回答してみよう

アカウントをお持ちの方は

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.48%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問