|
@@ -182,95 +182,5 @@ public class LocationController : MonoBehaviour
|
|
|
panel.transform.position = new Vector3(0, 0, pos_cube.z);
|
|
|
panel.transform.rotation = SideF.transform.rotation;
|
|
|
}
|
|
|
- }
|
|
|
-
|
|
|
- //public GameObject currentTank;
|
|
|
- //private GameObject Tank;
|
|
|
- private NavMeshAgent agent;
|
|
|
- public GameObject SpotSpawn;
|
|
|
- public Vector3 target;
|
|
|
- private bool b_target = true;
|
|
|
-
|
|
|
- public void TakePosition()
|
|
|
- {
|
|
|
- var Tank = Instantiate(Instantiate(Resources.Load("GameObjects/Panel", typeof(GameObject))) as GameObject);
|
|
|
- Tank.transform.position = SpotSpawn.transform.position;
|
|
|
- if (Tank != null)
|
|
|
- {
|
|
|
- Ray ray;
|
|
|
- RaycastHit hit;
|
|
|
- ray = UnityEngine.Camera.main.ScreenPointToRay(Input.mousePosition);
|
|
|
-
|
|
|
- if (Physics.Raycast(ray, out hit, 10000.0f))
|
|
|
- {
|
|
|
- // Tank.transform.position = hit.point;
|
|
|
- target = hit.point;
|
|
|
- if (b_target)
|
|
|
- {
|
|
|
- if (Vector3.Distance(target, transform.position) > 2f)
|
|
|
- {
|
|
|
- agent.SetDestination(target);
|
|
|
- b_target = false;
|
|
|
- Tank = null;
|
|
|
- }
|
|
|
- }
|
|
|
- }
|
|
|
- }
|
|
|
- }
|
|
|
-
|
|
|
-
|
|
|
- //public GameObject tankTemplatePrefab; //префаб для прозрачного танка
|
|
|
- //public GameObject tankPrefab; //префаб оригинального танка
|
|
|
- public LayerMask terrainMask; //слой который назначет террейну
|
|
|
-
|
|
|
- // этот метод назначить на клик кнопки "создать танк"
|
|
|
- public void makeTankOnClick()
|
|
|
- {
|
|
|
- //запускаем корутину
|
|
|
- StartCoroutine("setTankPosition");
|
|
|
- }
|
|
|
-
|
|
|
-
|
|
|
- /// <summary>
|
|
|
- /// http://unity3d.ru/distribution/viewtopic.php?f=18&t=36275
|
|
|
- /// </summary>
|
|
|
- /// <returns></returns>
|
|
|
- IEnumerator setTankPosition()
|
|
|
- {
|
|
|
- // создаём прозрачный танк
|
|
|
- GameObject tankTemplate = Instantiate<GameObject>(Instantiate(Resources.Load("GameObjects/Panel", typeof(GameObject))) as GameObject);
|
|
|
- // переменные для обнаружения столкновений мышки с террейном
|
|
|
- Ray ray;
|
|
|
- RaycastHit hit;
|
|
|
-
|
|
|
- // бесконечный цикл до тех пор, пока не кликнем по террейну
|
|
|
- while (true)
|
|
|
- {
|
|
|
- // пускаем луч из мышки
|
|
|
- ray = Camera.main.ScreenPointToRay(Input.mousePosition);
|
|
|
-
|
|
|
- // если луч попал в террейн
|
|
|
- if (Physics.Raycast(ray, out hit, terrainMask))
|
|
|
- {
|
|
|
- // перемещаем прозрачный танк в позицию столкновения луча и террейна
|
|
|
- tankTemplate.transform.position = hit.point;
|
|
|
- //tankPrefab.transform.rotation = Quaternion.FromToRotation(Vector3.up, hit.normal);
|
|
|
-
|
|
|
- // если нажали левую кнопку мышки
|
|
|
- if (Input.GetMouseButtonDown(0))
|
|
|
- {
|
|
|
- // удаляем прозрачный танк
|
|
|
- Destroy(tankTemplate);
|
|
|
- // и создаём оригинальный танк на его месте
|
|
|
- GameObject tank = Instantiate<GameObject>(Instantiate(Resources.Load("GameObjects/Panel", typeof(GameObject))) as GameObject);
|
|
|
- tank.transform.position = hit.point;
|
|
|
- //пустить tank в плаванье через навигейтАгент
|
|
|
-
|
|
|
- // останавливаем корутину
|
|
|
- yield break;
|
|
|
- }
|
|
|
- }
|
|
|
- yield return null;
|
|
|
- }
|
|
|
- }
|
|
|
+ }
|
|
|
}
|