Ejemplo n.º 1
0
    private void Succ(DudeMoveState dude)
    {
        if (dude.CubeStorage > dude.MaximumStorage || dude.SuccCooldown * dude.SuccSpeed < 1)
        {
            return;
        }

        dude.SuccCooldown = 0;

        RaycastHit hit;

        if (Physics.SphereCast(dude.transform.position + Vector3.up, 1.5f, (dude.Cursor.position - dude.transform.position).normalized, out hit,
                               (dude.Cursor.position - dude.transform.position).magnitude, ~((1 << 10) & (1 << 11))))
        {
            var selection = Selections.SphereSelection(World.Instance, hit.point.ToVector3Int(),
                                                       dude.SuccArea);

            var tiles = selection.SolidTiles.ToList();

            var cubes = tiles.Count;

            for (int i = 0; i < cubes; i++)
            {
                _pool.SpawnFromPool("SuccCube", tiles[i].Position + Vector3.one / 2, Quaternion.identity);
            }

            dude.CubeStorage += cubes;
            selection.DeleteAll();
        }
    }
    private void OnCollisionEnter(Collision other)
    {
        _pool.SpawnFromPool("LaserExplosion", transform.position, Quaternion.identity);

        var selection = Selections.SphereSelection(World.Instance, transform.position.ToVector3Int(), DestructionArea);

        selection.DeleteAll();
        HitEffect.ExecuteIfPresent(transform.position);
        gameObject.SetActive(false);
    }