void Shoot() { float temp_ao = STATS.accuracyOffset * UTIL.FastDist(transform.position, UTIL.MousePos(), 0.1f); Vector3 targetPos = UTIL.MousePos() + new Vector3(Random.Range(-temp_ao, temp_ao), Random.Range(-temp_ao, temp_ao)); Vector3 fireDir = targetPos - transform.position; RaycastHit2D shot = Physics2D.Raycast(STATS.bulletSpawnPoint.position, fireDir, STATS.distance, STATS.hitLayers); if (shot.collider != null) { //Debug.Log("hit"); if (shot.collider.gameObject.GetComponent <PlayerStats>() != null) { shot.collider.gameObject.GetComponent <PlayerStats>().TakeDamage(STATS.damage); } if (shot.collider.gameObject.CompareTag("Breakable")) { shot.collider.gameObject.GetComponent <ObjectStats>().TakeDamage(STATS.damage); } //Debug.Log("hit"); LineRenderer lr = Instantiate(STATS.bulletLR, STATS.bulletSpawnPoint.position, Quaternion.identity).GetComponent <LineRenderer>(); lr.SetPosition(0, STATS.bulletSpawnPoint.transform.position); lr.SetPosition(1, shot.point); Instantiate(STATS.muzzleFlash, STATS.barrelEnd.position, UTIL.GetPlayer().transform.rotation); STATS.fireRate_timer = STATS.fireRate; STATS.magSize_counter -= 1; } }
void Start() { mesh = new Mesh(); GetComponent <MeshFilter>().mesh = mesh; SetOrigin(targetPlayer.position); SetAimDirection((UTIL.MousePos() - targetPlayer.position).normalized); }
void LateUpdate() { SetOrigin(targetPlayer.position); SetAimDirection((UTIL.MousePos() - targetPlayer.position).normalized); origin = GameObject.FindGameObjectWithTag("Player").transform.position; float angle = startingAngle; float angleIncrease = fov / rayCount; Vector3[] vertices = new Vector3[rayCount + 1 + 1]; Vector2[] uv = new Vector2[vertices.Length]; int[] triangles = new int[rayCount * 3]; vertices[0] = origin; int vertexIndex = 1; int triangleIndex = 0; for (int i = 0; i <= rayCount; i++) { Vector3 vertex; RaycastHit2D hit = Physics2D.Raycast(origin, UTIL.GetVectorFromAngle(angle), viewDistance, hitLayers); if (hit.collider == null) { vertex = origin + UTIL.GetVectorFromAngle(angle) * viewDistance; } else { vertex = hit.point; } vertices[vertexIndex] = vertex; if (i > 0) { triangles[triangleIndex + 0] = 0; triangles[triangleIndex + 1] = vertexIndex - 1; triangles[triangleIndex + 2] = vertexIndex; triangleIndex += 3; } vertexIndex++; angle -= angleIncrease; } mesh.vertices = vertices; mesh.uv = uv; mesh.triangles = triangles; mesh.bounds = new Bounds(origin, Vector3.one * 1000f); }