Question by
Meiterumi · May 30, 2020 at 02:29 AM ·
bugrigidbody2djumprigidbody.addforcerigidbody.velocity
rigid.velocity.x = 0 for unknow reason
Hello Guys!
This is my first question here so i'm gonna try illustrate it the best that I can.
I'm trying to create a Script that makes an GameObject jump 3 times with different forces, and I did that using coroutine and its working pretty well. But randomly the velocity of my GameObject goes to 0 out of no where ( the map is only a Tilemap 2D with a Tilemap Collider) and after a brief moment it starts moving again as if nothing really happened.
Here is my Coroutine:
IEnumerator JumpLogic()
{
float[] jumpForce = {3,3,7};
int i = 0;
while (true)
{
yield return new WaitForSeconds(2f);
Jump(jumpForce[i]);
i++;
if(i >= jumpForce.Length)
i = 0;
}
}
My Update:
void Update()
{
Debug.Log(rigid.velocity.x);
if (box.IsTouching(col))
{
isJumping = false;
}
rigid.velocity = new Vector2(moveSpeed,rigid.velocity.y);
}
Jump Function:
public void Jump(float jumpForce)
{
rigid.velocity = new Vector2(moveSpeed, rigid.velocity.y);
if (isJumping) return;
isJumping = true;
rigid.AddForce(new Vector2(0, jumpForce), ForceMode2D.Impulse);
}
And here is my Start()
void Start()
{
rigid = GetComponent<Rigidbody2D>();
box = GetComponent<BoxCollider2D>();
isJumping = true;
col = FindObjectOfType<Tilemap>().GetComponent<TilemapCollider2D>();
StartCoroutine(JumpLogic());
Debug.Log(col);
}
Initial Setup from GameView
During Updates:
Could someone help me find the reason why this is happening?
bug0.png
(13.0 kB)
bug1-moves.png
(5.5 kB)
Comment