- Home /
Is there a better method when creating a sword attack check?
Hi I'm creating a 2D platformer and intend for the player to have a sword attack animation.
I've been trying to use OnTriggerEnter when instantiating the sword in front of the player to check on another static "enemy" primitive.
//swordAnim.js
//applied to sword with animation prefab
function Start () {
animation.Play();
}
function Update () {
Destroy(gameObject, 0.75);
}
function OnTriggerEnter(other : Collider)
{
if (other.tag == "enemy")
{
print("Enemy takes damage!");
}
}
//playerControl.js
//Here is the portion that instantiates the sword
var swordInstant : Transform;
function Update ()
{
if (Input.GetButtonUp("Fire1"))
{
var swordClone : Transform;
swordClone = Instantiate(swordInstant, transform.position, transform.rotation);
}
So this script works when I simply drop a copy of the sword prefab and position it so that the swing hits the "enemy" but it doesn't work when instantiating the sword in front of the player. What am I missing? I read that I might have to use raycasthit? Is there a tutorial someone could recommend for what i'm trying to do?
Thanks in advance for any help.
Answer by LantsInPance · Jun 13, 2013 at 10:28 PM
You could try setting up a capsule trigger collider that represents where the weapon will be at the point of applying damage. Then at the appropriate time during the animation you could check to see what is being hit by using Physics.CapsuleCast. I've done it that way in the past and it seemed to work out well for me.
Your answer
Follow this Question
Related Questions
HitSpark for Enemy Collision 1 Answer
NavMesh giving jerky like motion 0 Answers
OnTriggerEnter not firing if I instantiate a GameObject completely inside another's trigger 3 Answers
Make object move in a direction depending on where it spawns? (C#) 1 Answer
How to correctly do an enemy ranged attack script? 0 Answers