Okay I figured out how to solve these problems through hours of trial and error.
1. The kinematic/not have weapon colliding with stuff. I just had OnCollision return false and it basically did everything I wanted perfectly.
2. The angle that I was setting the target to is apparently in radians, so it spiraled out of control because it had to spin ALOT of times to get the crazy values I was giving it (50 degrees, not so big, 50 RADIANS though..). Additionally to get the right
angle I had to do: fixture.Body.IgnoreGravity = true; because gravity slightly affected it.
In order to create a swinging effect I had the target angle change back to the starting target angle as soon as it reached the target angle set when you press the slashing button. For example if its in degrees
if (keyState.IsKeyDown(Keys.D))
{
TargetAngle = 180;//isn't the exact code but for simplicities sake pretend TargetAngle is the targetangle of the weapon's angle joint
}
if (Math.Abs(TargetAngle)Math.Abs(
fixture.Body.Rotation)<3))
{
TargetAngle = 0;
}
Thus every time you press D, the weapon will swing down, then back up.
