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); } }
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) { //сделать предмет } } } }
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) { //сделать предмет } } } }