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)); } }
void OnTriggerEnter2D(Collider2D hit) { if (hit.gameObject.tag == "Enemy") { EnemyTakeDamage EnemyDamageScript = hit.gameObject.GetComponent <EnemyTakeDamage>(); EnemyDamageScript.takeDamage(damage); } }
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); } }