예제 #1
0
    private void FinishCreate()
    {
        if (!m_creatingObject)
        {
            return;
        }

        // 그리드 영역을 벗어난 곳에는 배치할 수 없음
        if (!m_gridManager.IsInArea(m_creatingObject))
        {
            Debug.Log("그리드 영역을 벗어나서 배치할 수 없겠네요..");
            return;
        }

        // 다른 Object와 겹치면 배치할 수 없음
        if (m_gridManager.IsIntersect(m_creatingObject))
        {
            Debug.Log("다른 오브젝트와 겹쳐서 배치할 수 없겠네요..");
            return;
        }

        m_creatingObject.SetGridContactPoints(m_gridManager);
        m_gridManager.AddGridObject(m_creatingObject);

        m_creatingObject = null;
        m_creationState  = ECreationState.Nothing;
    }
예제 #2
0
    private void Awake()
    {
        m_creationState  = ECreationState.Nothing;
        m_creatingObject = null;

        m_input = GetComponent <PlayerInput>();
    }
예제 #3
0
    public void StartCreate(string prefabName)
    {
        if (m_creationState != ECreationState.Nothing)
        {
            CancelCreate();
        }

        GameObject prefab = Resources.Load <GameObject>($"Prefabs/{prefabName}");

        if (prefab == null)
        {
            Debug.Log("This Prefab is Not Exist!");
            return;
        }

        m_creatingObject      = Instantiate(prefab, Vector3.zero, Quaternion.identity).GetComponent <GridObject> ();
        m_creatingObject.Type = prefabName;

        Vector2Int mouseGridPosition;

        if (RaycastMouse(out mouseGridPosition))
        {
            m_creatingObject.transform.position = m_gridManager.GridPosToWorldPos(mouseGridPosition);
        }

        m_creationState = ECreationState.Placement;
    }
예제 #4
0
    private void CancelCreate()
    {
        if (!m_creatingObject)
        {
            return;
        }

        Destroy(m_creatingObject);

        m_creatingObject = null;
        m_creationState  = ECreationState.Nothing;
    }