private void TriggerAttack() { var mousePos = Input.mousePosition; var direction = MousePosition.GetMouseWorldPosition(mousePos, mainCamera); var attackDirection = (transform.position - direction).normalized; var angle = Mathf.Atan2(attackDirection.y, attackDirection.x) * Mathf.Rad2Deg; if ((angle < -135 && angle > -180) || (angle > 135 && angle < 180)) { animator.SetTrigger("Attack_S"); currentAttackPoint = attackPoints[0]; rendererTransform.rotation = new Quaternion(0, 0, 0, 0); } else if (angle > -45 && angle < 45) { animator.SetTrigger("Attack_S"); currentAttackPoint = attackPoints[1]; rendererTransform.rotation = new Quaternion(0, 180, 0, 0); } else if (angle < -45 && angle > -135) { currentAttackPoint = attackPoints[2]; animator.SetTrigger("Attack_U"); } else if (angle > 45 && angle < 135) { currentAttackPoint = attackPoints[3]; animator.SetTrigger("Attack_D"); } }
private void HandleAim() { var mousePos = MousePosition.GetMouseWorldPosition(Input.mousePosition, Camera.main); var aimDirection = (mousePos - transform.position).normalized; var angle = Mathf.Atan2(aimDirection.y, aimDirection.x) * Mathf.Rad2Deg; aimTransform.eulerAngles = new Vector3(0, 0, angle); var localScale = new Vector3(0.5f, 0.5f, 1f); if (angle > 90 || angle < -90) { gameObject.transform.rotation = new Quaternion(0, 180, 0, 0); localScale.y = -0.5f; } else { gameObject.transform.rotation = new Quaternion(0, 0, 0, 0); localScale.y = 0.5f; } aimTransform.localScale = localScale; }
public override void UseSpell() { timer += Time.deltaTime; if (Input.GetButton("Fire1") && Player.energy > energyCost) { if (timer > 0.5f) { timer = 0; } else { return; } Player.energy -= energyCost; Destroy(Instantiate(particleSystem, transform.position, Quaternion.Euler(0, 0, Player.rotationZ)).gameObject, 3f); Vector3 mousePos = MousePosition.GetMouseWorldPosition(); Vector3 aimDirection = (mousePos - transform.position).normalized; RaycastHit2D hit = Physics2D.Raycast(transform.position, aimDirection, 15f); Debug.Log(hit.collider); ApplyDamage(hit.collider); Destroy(Instantiate(GameLogic.Instance.expolionPaticles, hit.collider.transform.position, Quaternion.identity), 0.5f); } }
private void SpriteArmRotate() { Vector3 mousePos = MousePosition.GetMouseWorldPosition(); Vector3 aimDirection = (mousePos - transform.position).normalized; RaycastHit2D hit = Physics2D.Raycast(transform.position, aimDirection); float angle = Mathf.Atan2(aimDirection.y, aimDirection.x) * Mathf.Rad2Deg; rotationZ = angle; _armSprite.transform.eulerAngles = new Vector3(0, 0, angle + 90); }
public override void UseSpell() { timer += Time.deltaTime; if (Input.GetKeyDown(KeyCode.Mouse0) && Player.energy > energyCost) { Player.energy -= energyCost; if (timer <= 0.33) { return; } else { timer = 0; } GameObject currentProjectile = Instantiate(projectile, transform.position, Quaternion.identity); Vector3 mousePos = MousePosition.GetMouseWorldPosition(); Vector3 aimDirection = (mousePos - transform.position).normalized; currentProjectile.GetComponent <Rigidbody2D>().AddForce(aimDirection * 40, ForceMode2D.Impulse); } }
private IEnumerator ShootWeapon(float offset = 0, int index = 0) { animator.SetTrigger("Shoot"); var mousePos = Input.mousePosition; var direction = MousePosition.GetMouseWorldPosition(mousePos, Camera.main);// - transform.position; direction = new Vector3(direction.x, direction.y + offset); var ray = Physics2D.Linecast(gunTip.position, direction, enemyLayerMask); //Draw shot //Debug.DrawRay(gunTip.position, direction, Color.red, 20f); //Debug.Log(direction); lineRenderers[index].SetPosition(0, gunTip.position); if (ray.collider != null) { var hitEnemy = ray.collider.gameObject; var enemyController = hitEnemy.GetComponent <HealthController>(); enemyController.TakeDamage(1); var effect = Instantiate(impactEffect, ray.point, new Quaternion()); effect.transform.SetParent(hitEnemy.transform); lineRenderers[index].SetPosition(1, effect.transform.position); } else { lineRenderers[index].SetPosition(1, direction); } lineRenderers[index].gameObject.SetActive(true); yield return(new WaitForSeconds(0.02f)); lineRenderers[index].gameObject.SetActive(false); }