예제 #1
0
    int finalLayer;                             //layer mask for raycast;

    // Use this for initialization
    void Start()
    {
        playerColli = GameObject.FindGameObjectWithTag("Player").GetComponent <CircleCollider2D>();

        finalLayer = (1 << 8) | (1 << 11);                    // layer mask for enemy and wall only

        lineRenderer                  = gameObject.GetComponent <LineRenderer>();
        lineRenderer.enabled          = true;
        lineRenderer.useWorldSpace    = true;
        lineRenderer.sortingLayerName = "Bullet";
        lineRenderer.material.color   = Color.green;
        Ray2D ray = new Ray2D(transform.position, transform.up);

        lineRenderer.SetPosition(0, transform.position);

        playerColli.enabled = false;
        hit = Physics2D.Raycast(transform.position, Input.mousePosition - Camera.main.WorldToScreenPoint(GameObject.FindGameObjectWithTag("Player").transform.position), distance, finalLayer);
        playerColli.enabled = true;

        if (hit.collider)
        {
            lineRenderer.SetPosition(1, hit.point);
            if (hit.collider.tag == "Enemy")
            {
                EnemyTakeDamage EnemyDamageScript = hit.collider.gameObject.GetComponent <EnemyTakeDamage>();
                EnemyDamageScript.takeDamage(damage);
            }
        }
        else
        {
            lineRenderer.SetPosition(1, ray.GetPoint(distance));
        }
    }
예제 #2
0
 void OnTriggerEnter2D(Collider2D hit)
 {
     if (hit.gameObject.tag == "Enemy")
     {
         EnemyTakeDamage EnemyDamageScript = hit.gameObject.GetComponent <EnemyTakeDamage>();
         EnemyDamageScript.takeDamage(damage);
     }
 }
예제 #3
0
    void OnCollisionEnter2D(Collision2D hit)
    {
        if (hit.gameObject.tag == "Enemy")
        {
            EnemyTakeDamage EnemyDamageScript = hit.gameObject.GetComponent <EnemyTakeDamage>();
            EnemyDamageScript.takeDamage(damage);

            Destroy(this.gameObject);
        }
        else
        {
            Vector3 rot = transform.rotation.eulerAngles;
            rot = new Vector3(rot.x, rot.y, rot.z + 180);
            Instantiate(bulletPrefab, transform.position - (transform.position - initial.position).normalized, Quaternion.Euler(rot));
            Destroy(this.gameObject);
        }
    }