void Shoot(Vector3 dir, float defaultMargin = 0, float maxDistance = 500f) { switch (weaponComponent.weapon) { case 0: break; case 1: //Mouse and playerTorso position variables. Vector3 mousePos = Camera.main.ScreenToWorldPoint(Input.mousePosition); Vector3 pos = playerTorso.transform.position + new Vector3(0, heightOffsetY, playerTorso.transform.position.z); //Ray Propierties RaycastHit2D hit; float rayMargin = Random.Range(-defaultMargin, defaultMargin); Vector3 rayDirection = (new Vector3(0, rayMargin, 0) + dir); float rayDistance = maxDistance; //Calculate Offset float ang = Vector2.Angle(Vector2.right, dir); offsetPosition = OffsetCalculator.GetOffsetPosition(mousePos.y > pos.y, pos, ang, lengthOffsetX, lengthOffsetY); //Shoot hit = Physics2D.Raycast(pos, rayDirection, rayDistance, shootingLayer); //Cosmetic //TODO: Clamp shotLength to the distance between offsetPosition and hit.point Vector3 lineOffset = OffsetCalculator.GetOffsetPosition(mousePos.y > pos.y, pos, ang, shotLength, shotLength); DrawLine(offsetPosition, lineOffset, Color.white, 0.1f); // TODO: effect if (hit.collider != null) { //Debug Actual hit Debug.DrawRay(offsetPosition, hit.point - (Vector2)offsetPosition, Color.red, 0); Rigidbody2D hitRb = hit.collider.GetComponent <Rigidbody2D>(); if (hitRb.bodyType != RigidbodyType2D.Static) { hitRb.velocity = new Vector2(30, 0); //temporal kickback targert hit.collider.GetComponent <HealthComponent>().Damage(50); //placeholder damager } } break; } }
// Update is called once per frame void Update() { if (player != null) { //this.transform.position = new Vector3(player.transform.position.x,this.transform.position.y,-10); //TODO: make it less terrible if (player.GetComponent <MainScriptPlayer>().isAiming&& zoomEnabled) { Vector3 plypos = player.transform.position; Vector3 mousePos = OffsetCalculator.GetMousePos(); float angle = Vector2.Angle(Vector2.right, mousePos - plypos); Vector3 aimPos = OffsetCalculator.GetOffsetPosition(plypos.y < mousePos.y, plypos, angle, zoomSize, zoomSize); Debug.DrawRay(plypos, mousePos - plypos, Color.cyan); this.transform.position = new Vector3(aimPos.x, aimPos.y, -10); } else { this.transform.position = new Vector3(player.transform.position.x, player.transform.position.y, -10); } } }