private void StartMovement(float angle)
 {
     transform.RotateAround(transform.up, angle * Mathf.Deg2Rad);
     destination  = transform.position + transform.forward * BuildGrid.getGridSize();
     state        = States.moving;
     nextMoveTime = Time.timeSinceLevelLoad + MOVE_DELAY + BuildGrid.getGridSize() / SPEED;
 }
    private void CreatePrefab(GameObject prefab, Vector3 worldPos, Vector3 offset)
    {
        worldPos   = BuildGrid.WorldToGridCenter(worldPos);
        worldPos.y = prefab.transform.position.y;
        worldPos  += offset;

        Quaternion rotation = prefab.transform.rotation;

        Instantiate(prefab, worldPos, rotation);
    }
示例#3
0
    private void CreatePrefab(GameObject prefab, Vector3 worldPos, Vector3 scale)
    {
        worldPos = BuildGrid.WorldToGridCenter(worldPos);

        worldPos.y = prefab.transform.position.y;
        scale.y    = prefab.transform.lossyScale.y;

        instantiatedField = (GameObject)Instantiate(prefab, worldPos, Quaternion.identity);
        instantiatedField.transform.localScale = scale;
        instantiatedField.transform.parent     = transform;
        instantiatedField.SetActive(!requiresPower);
    }
    void Start()
    {
        tileLayer = 1 << LayerMask.NameToLayer("Tile Marker");

        size *= BuildGrid.getGridSize();

        if (AreaClear(size))
        {
            float halfWidth = 0.5f;
            //HACK: The +/- 2 here comes from the factory bounds
            CreatePrefab(prefab, transform.position, new Vector3(size.x - 2f, 0f, -size.z + 2f) * halfWidth);
        }

        Destroy(gameObject);
    }
    bool AreaClear(Vector3 size)
    {
        float gridSize = BuildGrid.getGridSize();

        int girdCountX = (int)Mathf.Ceil(size.x / gridSize);
        int girdCountZ = (int)Mathf.Ceil(size.z / gridSize);

        Vector3 center = transform.position;

        for (int x = 0; x < girdCountX; x++)
        {
            for (int z = 0; z < girdCountZ; z++)
            {
                Vector3 spherePos = center + x * gridSize * Vector3.right - z * gridSize * Vector3.forward;

                Collider[] overlap = Physics.OverlapSphere(spherePos, 0.01f, tileLayer);

                //HACK
                if (overlap.Length == 1 && overlap[0].tag == "Rock")
                {
                    ResourceController rc = overlap[0].GetComponent <ResourceController>();
                    if (rc && !rc.IsSpawned())
                    {
                        Destroy(overlap[0].gameObject);
                        return(true);
                    }
                    return(false);
                }
                else if (overlap.Length > 0)
                {
                    return(false);
                }
            }
        }

        return(true);
    }
示例#6
0
 void Start()
 {
     radius *= BuildGrid.getGridSize();
     CreatePrefab(powerFieldPrefab, transform.position, Vector3.one * radius);
 }
示例#7
0
 private void CreatePrefab(GameObject prefab, Vector3 worldPos)
 {
     worldPos   = BuildGrid.WorldToGridCenter(worldPos);
     worldPos.y = prefab.transform.position.y;
     Instantiate(prefab, worldPos, Quaternion.identity);
 }
 private void SetDestination(Vector3 worldPos)
 {
     destination   = BuildGrid.WorldToGridCenter(worldPos);
     destination.y = transform.position.y;
     transform.LookAt(destination);
 }
 private void FixPostion()
 {
     destination        = BuildGrid.WorldToGridCenter(transform.position);
     destination.y      = transform.position.y;
     transform.position = destination;
 }
示例#10
0
 private void moveTo(Vector3 worldPos)
 {
     worldPos.y         = transform.position.y;
     worldPos           = BuildGrid.WorldToGridCenter(worldPos);
     transform.position = worldPos;
 }
示例#11
0
    // Use this for initialization
    void Start () {
        var touch = GetComponent<Touch>();
        touch.OnTapLocation.AddListener(OnTap);
        grid = FindObjectOfType<BuildGrid>();
	}