示例#1
0
    public void FromState(RayState rs)
    {
        // Muzzel Flash
        muzzelFlash.Flash();

        // Cast ray
        int masks = 0;

        masks |= (1 << LayerMask.NameToLayer("Player"));
        masks |= (1 << LayerMask.NameToLayer("Map"));

        var          fireDir = new Vector2(Mathf.Cos(rs.zAngle), Mathf.Sin(rs.zAngle));
        RaycastHit2D hitInfo = Physics2D.Raycast(rs.pos, fireDir, 1000, masks);

        if (hitInfo)
        {
            // Particle effect
            var effectPosition = new Vector3(hitInfo.point.x, hitInfo.point.y, -1);
            var effectRotation = Quaternion.Euler(0, 0, Random.Range(0.0f, 360.0f));
            var effect         = GameObject.Instantiate(impactEffect, effectPosition, effectRotation);
            GameObject.Destroy(effect, 1);
            //DrawRay.DrawLine(firePoint.transform.position, hitInfo.point, Color.red, 0.05f);
            DrawRay.DrawLine(rs.pos, hitInfo.point, Color.red, 1f);
        }
        else
        {
            //DrawRay.DrawLine(firePoint.transform.position, rs.zAngle, 100f, Color.red, 0.05f);
            DrawRay.DrawLine(rs.pos, rs.zAngle, 100f, Color.red, 1f);
        }
    }