- Home /
how to make particle do damage to enemy.
I am making a rocket launcher and i need the particle it creates to do damage. i also want it to launch rigidbodies here is the enemy script using UnityEngine; using UnityEngine.AI;
[RequireComponent(typeof(NavMeshAgent))]
[RequireComponent(typeof(Rigidbody))]
public class SC_NPCEnemy : MonoBehaviour, IEntity
{
public float attackDistance = 3f;
public float movementSpeed = 4f;
public float npcHP = 100;
//How much damage will npc deal to the player
public float npcDamage = 5;
public float attackRate = 0.5f;
public Transform firePoint;
public GameObject npcDeadPrefab;
[HideInInspector]
public Transform playerTransform;
[HideInInspector]
public SC_EnemySpawner es;
NavMeshAgent agent;
float nextAttackTime = 0;
Rigidbody r;
// Start is called before the first frame update
void Start()
{
agent = GetComponent<NavMeshAgent>();
agent.stoppingDistance = attackDistance;
agent.speed = movementSpeed;
r = GetComponent<Rigidbody>();
r.useGravity = false;
r.isKinematic = true;
}
// Update is called once per frame
void Update()
{
if (agent.remainingDistance - attackDistance < 0.01f)
{
if (Time.time > nextAttackTime)
{
nextAttackTime = Time.time + attackRate;
//Attack
RaycastHit hit;
if (Physics.Raycast(firePoint.position, firePoint.forward, out hit, attackDistance))
{
if (hit.transform.CompareTag("Player"))
{
Debug.DrawLine(firePoint.position, firePoint.position + firePoint.forward * attackDistance, Color.cyan);
IEntity player = hit.transform.GetComponent<IEntity>();
player.ApplyDamage(npcDamage);
}
}
}
}
//Move towardst he player
agent.destination = playerTransform.position;
//Always look at player
transform.LookAt(new Vector3(playerTransform.transform.position.x, transform.position.y, playerTransform.position.z));
//Gradually reduce rigidbody velocity if the force was applied by the bullet
r.velocity *= 0.99f;
}
public void ApplyDamage(float points)
{
npcHP -= points;
if (npcHP <= 0)
{
//Destroy the NPC
GameObject npcDead = Instantiate(npcDeadPrefab, transform.position, transform.rotation);
//Slightly bounce the npc dead prefab up
npcDead.GetComponent<Rigidbody>().velocity = (-(playerTransform.position - transform.position).normalized * 8) + new Vector3(0, 5, 0);
Destroy(npcDead, 10);
es.EnemyEliminated(this);
Destroy(gameObject);
}
}
}
thanks in advance. :)
Answer by sacredgeometry · Dec 04, 2020 at 08:36 PM
You can use the Collision
module to get unities particles to collide with objects then from there its just a matter of dealing with it like you would any other collision.
Your answer

Follow this Question
Related Questions
how to give particle bursts their own colliders 0 Answers
Contain VFX graph particles inside a gameobject 0 Answers
IN 3.5, detecting when an Game Object is touched by a particle 0 Answers
How to simply enable an objects particle system emission when that object collides with another? 1 Answer
Particles Won't Destroy 1 Answer