マイロボット配置システム6


テリトリー内だけ矢印になる
using System.Collections; using System.Collections.Generic; using UnityEngine; public class MyBotBase : MonoBehaviour { private int num = 0; // ★追加 public Material[] myMaterials; public bool isSetOK; // ★追加 private void Start() { GetComponent<MeshRenderer>().material = myMaterials[0]; isSetOK = false; } void Update() { Vector3 pos = transform.position; if(Input.GetKeyDown(KeyCode.LeftArrow)) { transform.position = new Vector3(pos.x - 1, 0, pos.z); } if (Input.GetKeyDown(KeyCode.RightArrow)) { transform.position = new Vector3(pos.x + 1, 0, pos.z); } if (Input.GetKeyDown(KeyCode.UpArrow)) { transform.position = new Vector3(pos.x, 0, pos.z + 1); } if (Input.GetKeyDown(KeyCode.DownArrow)) { transform.position = new Vector3(pos.x, 0, pos.z - 1); } if (Input.GetKeyDown(KeyCode.RightShift)) { num += 1; transform.rotation = Quaternion.Euler(0, 90 * num, 0); } } // ★追加 // (ポイント) // Trigger系のメソッドを使うので、Is Triggerにチェックが必要!! // 表示が切り替わらない場合には『MyBotBase』オブジェクトの『Box Collider』の『Is Trigger』にチェックが入っているか確認しよう! private void OnTriggerStay(Collider other) { if(other.gameObject.tag == "BlueTeritory") { GetComponent<MeshRenderer>().material = myMaterials[1]; isSetOK = true; } else if(other.gameObject.tag == "RedTeritory") { GetComponent<MeshRenderer>().material = myMaterials[0]; isSetOK = false; } } // ★追加 private void OnTriggerExit(Collider other) { if (other.gameObject.tag == "BlueTeritory") { GetComponent<MeshRenderer>().material = myMaterials[0]; isSetOK = false; } } }
C#







矢印の時だけ配置可能
using System.Collections; using System.Collections.Generic; using UnityEngine; using UnityEngine.UI; public class MyBotSet : MonoBehaviour { private int setCount; private Text countLabel; private int getGPpoint; private GPManager gpm; public int price; public GameObject myBotPrefab; private GameObject myBotBase; // ★追加 private bool setOK; void Start() { setCount = 0; countLabel = GetComponent<Text>(); countLabel.text = "× " + setCount.ToString("D3"); gpm = GameObject.Find("GPLabel").GetComponent<GPManager>(); myBotBase = GameObject.Find("MyBotBase"); } void Update() { getGPpoint = gpm.gpPoint; setCount = getGPpoint / price; countLabel.text = "×" + setCount.ToString("D3"); // ★追加 setOK = myBotBase.GetComponent<MyBotBase>().isSetOK; } public void OnMyBotButtonClicked() { // ★追加(『&& setOK == true』を追加する) if (setCount > 0 && setOK == true) { Instantiate(myBotPrefab, myBotBase.transform.position, myBotBase.transform.rotation); gpm.ReduceGP(price); } } }
C#



テリトリー内だけ矢印になる
using System.Collections; using System.Collections.Generic; using UnityEngine; public class MyBotBase : MonoBehaviour { private int num = 0; // ★追加 public Material[] myMaterials; public bool isSetOK; // ★追加 private void Start() { GetComponent<MeshRenderer>().material = myMaterials[0]; isSetOK = false; } void Update() { Vector3 pos = transform.position; if(Input.GetKeyDown(KeyCode.LeftArrow)) { transform.position = new Vector3(pos.x - 1, 0, pos.z); } if (Input.GetKeyDown(KeyCode.RightArrow)) { transform.position = new Vector3(pos.x + 1, 0, pos.z); } if (Input.GetKeyDown(KeyCode.UpArrow)) { transform.position = new Vector3(pos.x, 0, pos.z + 1); } if (Input.GetKeyDown(KeyCode.DownArrow)) { transform.position = new Vector3(pos.x, 0, pos.z - 1); } if (Input.GetKeyDown(KeyCode.RightShift)) { num += 1; transform.rotation = Quaternion.Euler(0, 90 * num, 0); } } // ★追加 // (ポイント) // Trigger系のメソッドを使うので、Is Triggerにチェックが必要!! // 表示が切り替わらない場合には『MyBotBase』オブジェクトの『Box Collider』の『Is Trigger』にチェックが入っているか確認しよう! private void OnTriggerStay(Collider other) { if(other.gameObject.tag == "BlueTeritory") { GetComponent<MeshRenderer>().material = myMaterials[1]; isSetOK = true; } else if(other.gameObject.tag == "RedTeritory") { GetComponent<MeshRenderer>().material = myMaterials[0]; isSetOK = false; } } // ★追加 private void OnTriggerExit(Collider other) { if (other.gameObject.tag == "BlueTeritory") { GetComponent<MeshRenderer>().material = myMaterials[0]; isSetOK = false; } } }
C#







矢印の時だけ配置可能
using System.Collections; using System.Collections.Generic; using UnityEngine; using UnityEngine.UI; public class MyBotSet : MonoBehaviour { private int setCount; private Text countLabel; private int getGPpoint; private GPManager gpm; public int price; public GameObject myBotPrefab; private GameObject myBotBase; // ★追加 private bool setOK; void Start() { setCount = 0; countLabel = GetComponent<Text>(); countLabel.text = "× " + setCount.ToString("D3"); gpm = GameObject.Find("GPLabel").GetComponent<GPManager>(); myBotBase = GameObject.Find("MyBotBase"); } void Update() { getGPpoint = gpm.gpPoint; setCount = getGPpoint / price; countLabel.text = "×" + setCount.ToString("D3"); // ★追加 setOK = myBotBase.GetComponent<MyBotBase>().isSetOK; } public void OnMyBotButtonClicked() { // ★追加(『&& setOK == true』を追加する) if (setCount > 0 && setOK == true) { Instantiate(myBotPrefab, myBotBase.transform.position, myBotBase.transform.rotation); gpm.ReduceGP(price); } } }
C#

マイロボット配置システム6