EDIT! So I loaded up a FRESH PROJECT, created a circle and added my script to it. When I hit start the circle launches off at a 45 degree angle, it works perfectly fine. I also tried adding a horizontal addforce on another object in my original project and it resulted in a jittery teleport to the right.
Something is broken inside my project related to horizontal force... What could it be?!
This has driven me and a bud mad for 24 hours now and I've searched high and low but have not found any similar problems or applicable solutions.
I'm developing a mario-style side scroller game and the concept is simple: Hit the box, a coin pops out with vertical and horizontal force. This is the ONLY code so far in the script attached to the coin.
void Start()
{
forceUp = new Vector2(0, upForce);
forceSide = new Vector2(sideForce, 0);
GetComponent<Rigidbody2D>().AddForce(forceUp, ForceMode2D.Impulse);
GetComponent<Rigidbody2D>().AddForce(forceSide, ForceMode2D.Impulse);
}
This is the code that instantiates the coin in the box script:
private void OnCollisionEnter2D(Collision2D collision)
{
RaycastHit2D hit = Physics2D.Raycast(transform.position, Vector2.down, 1.0f, layerMask);
if (!isOpen && hit.collider != null)
{
isOpened();
Instantiate(openPrize, new Vector3(transform.position.x, transform.position.y+1.0f, transform.position.z), transform.rotation);
}
}
problem is: The coin will pop "up" a distance directly related to the value I plug into the "up force" variable.
The coin will not move horizontally at all. If I jack the horizontal variable up to some stupid number like 5000, it will teleport a short distance to the side.
the animator of the prefab has "Apply root motion" enabled.
与恶龙缠斗过久,自身亦成为恶龙;凝视深渊过久,深渊将回以凝视…