void Update() { if (!DataCenter.CanFire || UICamera.isOverUI) { return; } // Begin dragging? if (Input.GetMouseButton(0) == true && down == false) { down = true; } // End dragging? if (Input.GetMouseButton(0) == false && down == true) { down = false; // Fire? if (Camera.main != null) { var endMousePosition = Input.mousePosition; var startPos = shootPos.position; var endPos = Camera.main.ScreenToWorldPoint(endMousePosition); var vec = endPos - startPos; var angle = D2D_Helper.Atan2(vec) * -Mathf.Rad2Deg + AngleOffset + Random.Range(-0.5f, 0.5f) * AngleRandomness; var clone = D2D_Helper.CloneGameObject(Resources.Load <GameObject>("Prefabs/Bomb/Bomb" + (DataCenter.currSelectBomb + 1)), null, startPos, Quaternion.Euler(0.0f, 0.0f, angle)); var cloneRb2D = clone.GetComponent <Rigidbody2D>(); if (cloneRb2D != null) { cloneRb2D.velocity = (endPos - startPos).normalized * Mathf.Min(20.0f, Vector3.Distance(endPos, startPos)); } EventSystem.DispatchEvent(EType.Fire); } } // Show dragging? if (Indicator != null) { Indicator.enabled = down; if (Camera.main != null && down == true) { var currentMousePosition = Input.mousePosition; var startPos = shootPos.position; var currentPos = Camera.main.ScreenToWorldPoint(currentMousePosition); var scale = Vector3.Distance(currentPos, startPos); var angle = D2D_Helper.Atan2(currentPos - startPos) * Mathf.Rad2Deg; scale = Mathf.Min(20.0f, scale); Indicator.transform.position = shootPos.position; Indicator.transform.localRotation = Quaternion.Euler(0.0f, 0.0f, -angle); Indicator.transform.localScale = new Vector3(scale, scale, scale); } } }
protected virtual void Update() { // Begin dragging? if (Input.GetMouseButton(0) == true && down == false) { down = true; startMousePosition = Input.mousePosition; } // End dragging? if (Input.GetMouseButton(0) == false && down == true) { down = false; // Fire? if (Camera.main != null && Bullet != null) { var endMousePosition = Input.mousePosition; var startPos = Camera.main.ScreenToWorldPoint(startMousePosition); startPos.Scale(new Vector3(1, 1, 0)); var endPos = Camera.main.ScreenToWorldPoint(endMousePosition); endPos.Scale(new Vector3(1, 1, 0)); var vec = endPos - startPos; var angle = D2D_Helper.Atan2(vec) * -Mathf.Rad2Deg + AngleOffset + Random.Range(-0.5f, 0.5f) * AngleRandomness; var clone = D2D_Helper.CloneGameObject(Bullet, null, startPos, Quaternion.Euler(0.0f, 0.0f, angle)); var cloneRb2D = clone.GetComponent <Rigidbody2D>(); if (cloneRb2D != null) { cloneRb2D.velocity = (endPos - startPos) * Power; } } } // Show dragging? if (Indicator != null) { Indicator.enabled = down; if (Camera.main != null && down == true) { var currentMousePosition = Input.mousePosition; var startPos = Camera.main.ScreenToWorldPoint(startMousePosition); var currentPos = Camera.main.ScreenToWorldPoint(currentMousePosition); var scale = Vector3.Distance(currentPos, startPos); var angle = D2D_Helper.Atan2(currentPos - startPos) * Mathf.Rad2Deg; var newPos = Camera.main.ScreenToWorldPoint(startMousePosition); newPos.Scale(new Vector3(1, 1, 0)); Indicator.transform.position = newPos; Indicator.transform.localRotation = Quaternion.Euler(0.0f, 0.0f, -angle); Indicator.transform.localScale = new Vector3(scale, scale, scale); } } }
protected virtual void Update() { if (Input.GetMouseButton(0) == true && down == false && Time.timeScale == 1) { down = true; startMousePosition = Input.mousePosition; } mouse_pos = Input.mousePosition; object_pos = Camera.main.WorldToScreenPoint(SpawnPoint.transform.position); mouse_pos.x = mouse_pos.x - object_pos.x; mouse_pos.y = mouse_pos.y - object_pos.y; var angle2 = Mathf.Atan2(mouse_pos.y, mouse_pos.x) * Mathf.Rad2Deg; if (Input.GetMouseButton(0) == false && down == true) { down = false; if (angle2 < 50 && angle2 > -50) { if (Camera.main != null && Bullet != null) { var endMousePosition = Input.mousePosition; var startPos = Camera.main.ScreenToWorldPoint(startMousePosition); var endPos = Camera.main.ScreenToWorldPoint(endMousePosition); var vec = (endPos - startPos) * Power; var angle = D2D_Helper.Atan2(vec) * -Mathf.Rad2Deg + AngleOffset + Random.Range(-0.5f, 0.5f) * AngleRandomness; Vector3 rotationVector = new Vector3(0, 0, angle2); SpawnPoint.transform.rotation = Quaternion.Euler(rotationVector); var clone = D2D_Helper.CloneGameObject(Bullet, null, SpawnPoint.transform.position, Quaternion.Euler(0.0f, 0.0f, angle2)); var cloneRb2D = clone.GetComponent <Rigidbody2D>(); if (cloneRb2D != null) { cloneRb2D.velocity = (endPos - startPos) * Power; cloneRb2D.AddForce(new Vector2(100, 50)); } } } } if (Indicator != null && angle2 < 50 && angle2 > -50) { Indicator.enabled = down; if (Camera.main != null && down == true) { var currentMousePosition = Input.mousePosition; var startPos = Camera.main.ScreenToWorldPoint(SpawnPoint.transform.position); var currentPos = Camera.main.ScreenToWorldPoint(currentMousePosition); var scale = Vector3.Distance(currentPos, startPos); Debug.Log(scale); Indicator.transform.position = SpawnPoint.transform.position; Indicator.transform.localRotation = Quaternion.Euler(0.0f, 0.0f, angle2); Indicator.transform.localScale = new Vector3(scale / 15, scale / 15, scale / 15); } } }
protected virtual void Update() { if (Input.GetKeyDown(Requires) == true && Prefab != null && Camera.main != null) { var ray = Camera.main.ScreenPointToRay(Input.mousePosition); var distance = D2D_Helper.Divide(ray.origin.z, ray.direction.z); var point = ray.origin - ray.direction * distance; D2D_Helper.CloneGameObject(Prefab, null).transform.position = point; } }
protected virtual void FixedUpdate() { if (IsFiring == true && Bullet != null && cooldownTimer <= 0.0f) { cooldownTimer = ShotCooldown; var clone = D2D_Helper.CloneGameObject(Bullet, null, transform.position, transform.rotation); var body = clone.GetComponent <Rigidbody2D>(); if (body != null) { body.velocity = transform.up * ShootSpeed; } } }
public void UpdateDestruction() { if (AllowDestruction == true) { #if UNITY_EDITOR if (Application.isPlaying == false) { return; } #endif if (Damage >= DamageLimit) { if (ReplaceWith != null) { D2D_Helper.CloneGameObject(ReplaceWith, transform.parent, transform.position, transform.rotation); } D2D_Helper.Destroy(gameObject); } } }
public static bool Generate(D2D_Destructible destructible, D2D_SpriteSplitOrder splitOrder) { cells.Clear(); if (destructible != null && destructible.AlphaTex != null) { target = destructible; tex = target.AlphaTex; width = tex.width; height = tex.height; total = width * height; pixels = tex.GetPixels32(); if (cells.Capacity < total) { cells.Capacity = total; } var threshold = (byte)(target.SplitThreshold * 255.0f); for (var i = 0; i < total; i++) { cells.Add(pixels[i].a >= threshold); } fills.Clear(); var validFillCount = 0; for (var i = 0; i < total; i++) { if (cells[i] == true) { currentFill = new Fill(); fills.Add(currentFill); currentFill.XMin = currentFill.XMax = i % width; currentFill.YMin = currentFill.YMax = i / width; BeginFloodFill(i, currentFill.XMin, currentFill.YMin); // Skip the first floodfill if (currentFill.Count >= target.SplitMinPixels) { currentFill.Valid = true; validFillCount += 1; } } } // Can we split? if (validFillCount > 1) { var firstSet = false; switch (splitOrder) { case D2D_SpriteSplitOrder.KeepLargest: fills.Sort((a, b) => b.Count.CompareTo(a.Count)); break; case D2D_SpriteSplitOrder.KeepSmallest: fills.Sort((a, b) => a.Count.CompareTo(b.Count)); break; } foreach (var fill in fills) { if (fill.Valid == true) { if (firstSet == false) { firstSet = true; Split(destructible, fill, false); } else { var clonedGameObject = D2D_Helper.CloneGameObject(destructible.gameObject, destructible.transform.parent); var clonedDestructible = clonedGameObject.GetComponent <D2D_Destructible>(); Split(clonedDestructible, fill, true); } } } return(true); } if (validFillCount == 0) { D2D_Helper.Destroy(destructible.gameObject); } } return(false); }
protected virtual void Update() { if (GameManager.getTurno(2) == true && GameManager.isLife((int)Codigo_dragon.Dragon_3_1) && D2D_ReplaceOnCollision.disparo_curso == 1) { LetPlayer.turno = 3; CameraMov.turno = 3; mouse_pos = Input.mousePosition; object_pos = Camera.main.WorldToScreenPoint(SpawnPoint.transform.position); mouse_pos.x = mouse_pos.x - object_pos.x; mouse_pos.y = mouse_pos.y - object_pos.y; var angle2 = Mathf.Atan2(mouse_pos.y, mouse_pos.x) * Mathf.Rad2Deg; if (angle2 < 50 && angle2 > -50) { Vector3 rotationVector2 = new Vector3(0, 0, angle2); transform.rotation = Quaternion.Euler(rotationVector2); } if (Input.GetMouseButton(0) == true && down == false && Time.timeScale == 1) { down = true; //tartMousePosition = Input.mousePosition; startMousePosition = SpawnPoint.transform.position; } if (Input.GetMouseButton(0) == false && down == true) { down = false; if (angle2 < 50 && angle2 > -50) { if (Camera.main != null && Bullet != null) { an.SetTrigger("ataque"); var endMousePosition = Input.mousePosition; //var startPos = Camera.main.ScreenToWorldPoint(startMousePosition); var startPos = startMousePosition; var endPos = Camera.main.ScreenToWorldPoint(endMousePosition); var vec = (endPos - startPos) * Power; var angle = D2D_Helper.Atan2(vec) * -Mathf.Rad2Deg + AngleOffset + Random.Range(-0.5f, 0.5f) * AngleRandomness; Vector3 rotationVector = new Vector3(0, 0, angle2); SpawnPoint.transform.rotation = Quaternion.Euler(rotationVector); Vector3 xSp = SpawnPoint.transform.position; xSp.x = xSp.x + 0.5f; var clone = D2D_Helper.CloneGameObject(Bullet, null, xSp, Quaternion.Euler(0.0f, 0.0f, angle2)); var cloneRb2D = clone.GetComponent <Rigidbody2D>(); turno = false; audio.clip = disparo; audio.Play(); if (cloneRb2D != null) { cloneRb2D.velocity = (endPos - startPos) * Power; cloneRb2D.AddForce(new Vector2(100, 50)); } D2D_ReplaceOnCollision.lado = 1; } } } if (Indicator != null && angle2 < 50 && angle2 > -50) { Indicator.enabled = down; if (Camera.main != null && down == true) { var currentMousePosition = Input.mousePosition; var startPos = Camera.main.ScreenToWorldPoint(SpawnPoint.transform.position); var currentPos = Camera.main.ScreenToWorldPoint(currentMousePosition); var scale = Vector3.Distance(currentPos, startPos); Indicator.transform.position = SpawnPoint.transform.position; Indicator.transform.localRotation = Quaternion.Euler(0.0f, 0.0f, angle2); if (scale / 15 > 1) { scale = 15; } Indicator.transform.localScale = new Vector3(scale / 15, scale / 15, scale / 15); LetPlayer.turno = 0; } } } }
public static void EndSplitting(D2D_SplitOrder order, bool blur) { if (destructible != null) { if (Groups.Count > 0) { // Sort switch (order) { case D2D_SplitOrder.KeepLargest: Groups.Sort((a, b) => b.Count.CompareTo(a.Count)); break; case D2D_SplitOrder.KeepSmallest: Groups.Sort((a, b) => a.Count.CompareTo(b.Count)); break; } // Store list of others splitData.SolidPixelCounts.Clear(); for (var i = 0; i < Groups.Count; i++) { splitData.SolidPixelCounts.Add(Groups[i].Count); } // Split for (var i = Groups.Count - 1; i >= 0; i--) { var group = Groups[i]; splitData.Index = i; splitData.IsClone = i > 0; // Split if (i > 0) { var tempAlphaData = destructible.AlphaData; destructible.AlphaData = null; // Clone this destructible without alpha data, because we will manually set it after this var clonedDestructible = D2D_Helper.CloneGameObject(destructible.gameObject, destructible.transform.parent).GetComponent <D2D_Destructible>(); destructible.AlphaData = tempAlphaData; Split(clonedDestructible, group, true, blur); } // Overwrite original else { Split(destructible, group, false, blur); } } } else { D2D_Helper.Destroy(destructible.gameObject); } destructible = null; } D2D_ClassPool <D2D_SplitGroup> .Add(Groups, g => g.AddToPool()); }