- Home /
OnTriggerEnter - Assign as a Target to Player Script
I have a script on my NPC saying if an enemy enters the area, assign the player to a variable indicating that its being targeted. Then, on my player I have a script assigning the enemy that enters its trigger to a target variable. Reason why I have it like this is because if I only have the player side, the target will only be assigned if the enemy actually walks into the bounds of the trigger.
The problem is, the targets aren't being assigned at all on both sides, the player side used to work when an NPC actually walks into the player trigger.
I'm using these scripts for a simple combat system, which I will eventually convert to using a combination of this and RayCasts. Thank you!
Everything was working well until I added the NPC side of the script.
Here's my player Hit script:
using UnityEngine;
using System.Collections;
public class Hit : MonoBehaviour {
public int hitCount;
public GameObject target;
public float enemyCurrentHealth;
public string name;
public float playerDamage;
public bool isAttacking;
public bool hasHit;
public float delayTime;
public float delayTime2;
void Start () {
}
void Update() {
if(Input.GetMouseButtonDown(0) && (!isAttacking) && (!animation.IsPlaying("Regular_swing"))) {
StartCoroutine(Attack(delayTime, delayTime2, playerDamage));
}
}
void OnTriggerEnter(Collider collision) {
name = collision.name.ToString();
target = collision.gameObject;
}
void OnTriggerExit(Collider collision) {
target = null;
}
IEnumerator Attack(float delayTime, float delayTime2, float playerDamage) {
isAttacking = true;
animation.Play("Regular_swing");
yield return new WaitForSeconds(delayTime);
hasHit = true;
hitCount += 1;
//commit damage
if(target)
target.SendMessageUpwards("ApplyDamage", playerDamage);
yield return new WaitForSeconds(delayTime2);
hasHit = false;
isAttacking = false;
target = null;
}
}
And this Is my enemy targetactivate script.
using UnityEngine;
using System.Collections;
public class TargetActivate : MonoBehaviour {
public GameObject beingTargetedBy;
void OnTriggerEnter(Collider collision) {
beingTargetedBy = collision.gameObject;
collision.GetComponent<Hit>().target = gameObject;
}
void OnTriggerExit(Collider collision) {
beingTargetedBy = null;
collision.GetComponent<Hit>().target = null;
}
}
Your answer
Follow this Question
Related Questions
On Trigger Enter, Collide with object, specific collision 1 Answer
Trigger Spawning? 1 Answer
Colliding two GameObjects 1 Answer
Keep doing something while colliding 1 Answer