Question by
susamcik · Feb 08, 2020 at 06:06 PM ·
prefab2d-platformerenemyraycasthit2d
Im using raycast system for shooting but cant figure out how to add blood partical to an enemy collider
{void Shoot() {
Vector2 mousePosition = new Vector2(Camera.main.ScreenToWorldPoint(Input.mousePosition).x, Camera.main.ScreenToWorldPoint(Input.mousePosition).y);
Vector2 firePointPosition = new Vector2(firePoint.position.x, firePoint.position.y);
RaycastHit2D hit = Physics2D.Raycast(firePointPosition, mousePosition - firePointPosition, 100, whatToHit);
// this.gameObject.transform.Find("adaminkolu").gameObject.SetActive(true); //bu adamin kolunu kaldirmak icin script
// gameObject.GetComponentInChildren<Renderer>().enabled = true;
spriteRenderers[0].enabled = true; //bu dogru kod sadece child taki sprite enable icin.
Debug.DrawLine(firePointPosition, (mousePosition - firePointPosition) * 100, Color.cyan);
if (hit.collider != null)
{
Debug.DrawLine(firePointPosition, hit.point, Color.red);
Enemy enemy = hit.collider.GetComponent<Enemy>();
if (enemy != null)
{
enemy.DamageEnemy(Damage);
Debug.Log("We hit " + hit.collider.name + " and did " + Damage + " damage.");
}
}
if (Time.time >= timeToSpawnEffect)
{
Vector3 hitPos;
Vector3 hitNormal;
if (hit.collider == null)
{
hitPos = (mousePosition - firePointPosition) * 30;
hitNormal = new Vector3(9999, 9999, 9999);
}
else
{
hitPos = hit.point;
hitNormal = hit.normal;
}
Effect(hitPos, hitNormal);
timeToSpawnEffect = Time.time + 1 / effectSpawnRate;
}
}
void Effect(Vector3 hitPos, Vector3 hitNormal)
{
Transform trail = Instantiate(BulletTrailPrefab, firePoint.position, firePoint.rotation) as Transform;
LineRenderer lr = trail.GetComponent<LineRenderer>();
if (lr != null)
{
lr.SetPosition(0, firePoint.position);
lr.SetPosition(1, hitPos);
}
Destroy(trail.gameObject, 0.04f);
if (hitNormal != new Vector3(9999, 9999, 9999))
{
Transform hitParticle = Instantiate(HitPrefab, hitPos, Quaternion.FromToRotation(Vector3.forward, hitNormal)) as Transform;
Destroy(hitParticle.gameObject, 1f);
if (GameObject.FindWithTag("Enemy"))
{
Debug.Log("We hit Enemy");
}
}
Transform clone = Instantiate(MuzzleFlashPrefab, firePoint.position, firePoint.rotation) as Transform;
clone.parent = firePoint;
float size = Random.Range(0.6f, 0.9f);
clone.localScale = new Vector3(size, size, size);
Destroy(clone.gameObject, 0.02f);
//Shake the camera
camShake.Shake(camShakeAmt, camShakeLength);
}]
i want to add this code an when raycast hits enemy Instantiate a bloodprefab. Any ideas.
Comment