Esempio n. 1
0
    public void Fire(Vector2 direct, bool isTouch)
    {
        var tween = TweenRotation.Begin(gameObject, 0.3f, Quaternion.identity);

        tween.from = new Vector3(0, 0, 90);
        tween.to   = new Vector3(0, 0, -90);
        tween.SetOnFinished(() => {
            // OnFinishedFire();
            transform.rotation = Quaternion.identity;
        });


        var distance = Vector3.Distance(transform.position, direct) / tileDataProvider.TileSize;

        if (distance > range)
        {
            return;
        }


        if (SwapItemManager.AddItem(ItemData.Torch.Id, direct))
        {
            playerModel.GetBag().UseItem(itemData);
        }
    }
Esempio n. 2
0
    void OnFinishedFire()
    {
        isFireing = false;
        transform.localRotation = new Quaternion();
        damagePoint.enabled     = false;

        var ray = Vector3.zero;

        var v = UltimateJoystick.GetVerticalAxis("Joystick2");
        var h = UltimateJoystick.GetHorizontalAxis("Joystick2");

        ray = new Vector3(h, v) * 100;

        if (!isTouch)
        {
            var pos = Camera.main.ScreenToWorldPoint(Input.mousePosition);
            ray = (pos - firePoint.position);
            // Debug.LogError(Vector2.Distance(ray,Vector2.zero));
        }

        var tilesDown = Collision.Raycast(firePoint.position, new Vector2(1, 1), ray, false);

        if (tilesDown.Count > 0)
        {
            // ищем ближайшею
            int   index   = 0;
            float minDist = float.MaxValue;
            for (int i = 0; i < tilesDown.Count; i++)
            {
                var newDist = Vector3.Distance(firePoint.position, tileDataProvider.OffsetTileToWorldPos(tilesDown[i])) / tileDataProvider.TileSize;
                if (newDist < minDist)
                {
                    minDist = newDist;
                    index   = i;
                }
            }


            if (minDist <= range)
            {
                tileDataProvider.DamageTile(tilesDown[index], 100);
                var pos = tileDataProvider.OffsetTileToWorldPos(tilesDown[index]);
                //var pos = Camera.main.ScreenToWorldPoint(Input.mousePosition);
                var removeItemId = SwapItemManager.RemoveItem(pos);
                if (removeItemId != 0)
                {
                    //сделать предмет
                }
            }
        }
    }
Esempio n. 3
0
    void OnFinishedFire()
    {
        isFireing = false;
        transform.localRotation = new Quaternion();
        damagePoint.enabled     = false;

        var pos = Camera.main.ScreenToWorldPoint(Input.mousePosition);

        var ray       = pos - firePoint.position;
        var tilesDown = Collision.Raycast(firePoint.position, new Vector2(1, 1), ray, true);

        // Debug.LogError(tilesDown.Count);



        if (tilesDown.Count > 0)
        {
            // ищем ближайшею
            int   index   = 0;
            float minDist = float.MaxValue;
            for (int i = 0; i < tilesDown.Count; i++)
            {
                //Debug.LogError(Map[tilesDown[i].x, tilesDown[i].y].IsTree());
                if (Map[tilesDown[i].x, tilesDown[i].y].IsTree())
                {
                    //if(tilesDown[i].)
                    var newDist =
                        Vector3.Distance(firePoint.position, tileDataProvider.OffsetTileToWorldPos(tilesDown[i])) /
                        tileDataProvider.TileSize;
                    if (newDist < minDist)
                    {
                        minDist = newDist;
                        index   = i;
                    }
                }
            }


            if (minDist <= range)
            {
                tileDataProvider.DamageTile(tilesDown[index], 7, false);

                var removeItemId = SwapItemManager.RemoveItem(pos);
                if (removeItemId != 0)
                {
                    //сделать предмет
                }
            }
        }
    }