Exemple #1
0
    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;
        }
    }
Exemple #2
0
 void Start()
 {
     mesh = new Mesh();
     GetComponent <MeshFilter>().mesh = mesh;
     SetOrigin(targetPlayer.position);
     SetAimDirection((UTIL.MousePos() - targetPlayer.position).normalized);
 }
Exemple #3
0
    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);
    }