В окне способностей игрок выбирает нужную и нажимает на землю. Там появляется объект, например, турель огневой поддержки. По Х и Z турель соответствует хитпоинту рейкаста. Однако ее положение по Y выше. А при последующих созданиях турелей их положения по Y инкрементируются вдвое. В итоге новые турели оказываются в космическом пространстве и не могут оказывать огневую поддержку.
Подскажите, в чем причина, братцы, код прилагаю:
using UnityEngine;
public class StrikeMenu : MonoBehaviour
{
private bool startStrike = false;
private int IndexStrike = -1;
private int IndexStrikeMenuOpen = -1;
public StrikeMode SMode = null;
private Ray _ray;
private RaycastHit _hit;
private RaycastHit pointSpawn;
public GameObject _openstrikemenu;
public GameObject _openbutton;
public GameObject _closebutton;
public GameObject _cancelbutton;
private void Start()
{
_openstrikemenu.gameObject.SetActive(false);
_closebutton.gameObject.SetActive(false);
_cancelbutton.gameObject.SetActive(false);
}
private void Update()
{
if (startStrike == true)
{
if (Input.GetMouseButton(button: 0))
{
if (SMode.WarTimer >= SMode.StrikeList[IndexStrike].Reload)
{
_ray = Camera.main.ScreenPointToRay(Input.mousePosition);
if (Physics.Raycast(_ray, out _hit))
{
Instantiate (SMode.StrikeList[IndexStrike].Strike, new Vector3(_hit.point.x, _hit.point.y, _hit.point.z), Quaternion.identity);
SMode.WarTimer -= SMode.StrikeList[IndexStrike].Reload;
_openbutton.gameObject.SetActive(true);
_cancelbutton.gameObject.SetActive(false);
IndexStrike = -1;
startStrike = false;
}
}
}
}
}
public void StartStrike (int ButtonClickStrike)
{
if (SMode.WarTimer >= SMode.StrikeList[ButtonClickStrike].Reload)
{
startStrike = true;
IndexStrike = ButtonClickStrike;
_openstrikemenu.gameObject.SetActive(false);
_closebutton.gameObject.SetActive(false);
_openbutton.gameObject.SetActive(false);
_cancelbutton.gameObject.SetActive(true);
IndexStrikeMenuOpen = -1;
Debug.Log("Start Strike");
}
}
// далее часть про UI