CubeController.csPUN2の記事: 目次
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 |
using Photon.Pun; using UnityEngine; /// <summary> /// /// Unity 2019.1.11f1 /// /// Pun: 2.4 /// /// Photon lib: 4.1.2.4 /// /// </summary> [RequireComponent(typeof(PhotonView))] [RequireComponent(typeof(PhotonTransformView))] public class CubeController : MonoBehaviour { ///////////////////////////////////////////////////////////////////////////////////// // Field //////////////////////////////////////////////////////////////////////////// ///////////////////////////////////////////////////////////////////////////////////// private PhotonView photonView; private MeshFilter meshFilter; [SerializeField] private Mesh cubeMesh; [SerializeField] private Mesh sphereMesh; [SerializeField] private Mesh capsuleMesh; [SerializeField] private Mesh cylinderMesh; ///////////////////////////////////////////////////////////////////////////////////// // Start //////////////////////////////////////////////////////////////////////////// ///////////////////////////////////////////////////////////////////////////////////// // Start is called before the first frame update private void Start() { photonView = GetComponent<PhotonView>(); meshFilter = GetComponent<MeshFilter>(); } ///////////////////////////////////////////////////////////////////////////////////// // Update /////////////////////////////////////////////////////////////////////////// ///////////////////////////////////////////////////////////////////////////////////// // Update is called once per frame private void Update() { // オーナー以外は操作不可 if (photonView.IsMine == false) { return; } // 上矢印キー if (Input.GetKeyDown(KeyCode.UpArrow)) { transform.Translate(0, 1, 0); } // 下矢印キー if (Input.GetKeyDown(KeyCode.DownArrow)) { transform.Translate(0, -1, 0); } // 左矢印キー if (Input.GetKeyDown(KeyCode.LeftArrow)) { transform.Translate(-1, 0, 0); } // 右矢印キー if (Input.GetKeyDown(KeyCode.RightArrow)) { transform.Translate(1, 0, 0); } // Aキー if (Input.GetKeyDown(KeyCode.A)) { // キューブに変身するRPCを送信 photonView.RPC("RpcChangeMesh", RpcTarget.All, "Cube"); } // Sキー if (Input.GetKeyDown(KeyCode.S)) { // スフィアに変身するRPCを送信 photonView.RPC("RpcChangeMesh", RpcTarget.All, "Sphere"); } // Dキー if (Input.GetKeyDown(KeyCode.D)) { // カプセルに変身するRPCを送信 photonView.RPC("RpcChangeMesh", RpcTarget.All, "Capsule"); } // Fキー if (Input.GetKeyDown(KeyCode.F)) { // シリンダーに変身するRPCを送信 photonView.RPC("RpcChangeMesh", RpcTarget.All, "Cylinder"); } } ///////////////////////////////////////////////////////////////////////////////////// // PunRPCs ////////////////////////////////////////////////////////////////////////// ///////////////////////////////////////////////////////////////////////////////////// // Meshを変更するRPCを受信 [PunRPC] private void RpcChangeMesh(string type) { if (meshFilter == null) { Debug.Log("RpcChangeMesh Failed"); return; } switch (type) { case "Cube": meshFilter.mesh = cubeMesh; break; case "Sphere": meshFilter.mesh = sphereMesh; break; case "Capsule": meshFilter.mesh = capsuleMesh; break; case "Cylinder": meshFilter.mesh = cylinderMesh; break; } } } |