- Home /
2D Box Collider doesn't flip with Sprite
I have been looking through the forums and answers all day and I haven't found a fix to this. I found a few that get close but never answer it.
I have a character sprite in my game and when I "flip" the character to face the other way using the negative localscale in the x, the character flips as expected but when the BoxCollider2D on the sword my character is holding flips with it, the collider is scaled and moves the opposite direction of the animation on the character. If what I am reading(from the community) is true the box collider2d cannot be flipped. How do I make the box collider2d that is on my characters sword stay were it should on the sword sprite no matter what direction the sword is facing?
Answer by CoalCzar · Mar 01, 2014 at 03:58 AM
One solution would be to use Mecanim on the boxCollider2D to update its transform or component values (whatever you're having issues with) based upon the sword state that you could trigger through the same script you're using to change the sword's direction. You would basically create two animations that only have one frame and that frame has the keyvalues that you need to make the collider fit the sword in the direction you need and then trigger those animations based on either a boolean or an int.
If you need a more detailed explanation, I can do that. Granted, this might be a bit overkill to a simpler solution I'm not aware of.
Im not sure if that would work based on how I have everything setup. But upon reading more into the forums I have seen that I could probably create two trigger boxes, one each side of the character and when I press the attack button, activate the trigger in the direction the character is facing and if the enemy is within the trigger do damage. Do you think this is possible working route? the only problem I see is how do I make it look like the weapon is hitting the enemy when damage is done? I will continue scouring the forums for this answer but thank you for your input!
Answer by martimillion · Apr 12, 2014 at 03:15 AM
Yes ! I can confirm it doesn't work as I expected! Collider2D doesn't work with transform.localScale. I making a platformer game and melee attack look so ugly...
Answer by rrRobichaux · Apr 12, 2014 at 10:35 PM
I set a bool that is (par example)"walking right". If the "waling right" key is down set to true. I do a check on this bool and rotate the sprite on it y axis 180 or -180 depending