Quantcast
Channel: Questions in topic: "addforce"
Viewing all articles
Browse latest Browse all 1264

Addforce lasting 1 frame

$
0
0
Edit: (My rigid body settings are as follows - mass = 1 drag = 0 angular drag = 0.05 gravity = yes is kinematic = no interpolate = none collision detection = discrete only constraints on all rotations) Hello, I am trying to make a directional air dodge mechanic (like in smash bros) but the force I am adding is only lasting for one frame. This is only happening with my left and right (A and D) inputs. Here is the specific part of the script. else if (anim.GetBool("IsAirborn") == true && Input.GetKeyDown(KeyCode.I) && NotShielding == true && Input.GetKey(KeyCode.D) && airdodgeamount < 1 && djumping == false) { NotShielding = false; gravity = 0; anim.SetInteger("AnimParameter", 9); speed = 30f; calculatedforce = speed * (50 * mainrb.mass); mainrb.AddForce(new Vector3(calculatedforce, 0, 0)); coroutine = WaitForAirdodge(0.167f); StartCoroutine(coroutine); gravity = 8; airdodgeamount++; } else if (anim.GetBool("IsAirborn") == true && Input.GetKeyDown(KeyCode.I) && NotShielding == true && Input.GetKey(KeyCode.A) && airdodgeamount < 1 && djumping == false) { NotShielding = false; gravity = 0; anim.SetInteger("AnimParameter", 9); speed = -30f; calculatedforce = speed * (50 * mainrb.mass); mainrb.AddForce(new Vector3(calculatedforce, 0, 0)); coroutine = WaitForAirdodge(0.167f); StartCoroutine(coroutine); gravity = 8; airdodgeamount++; } else if (anim.GetBool("IsAirborn") == true && Input.GetKeyDown(KeyCode.I) && NotShielding == true && Input.GetKey(KeyCode.W) && airdodgeamount < 1 && djumping == false) { NotShielding = false; gravity = 0; anim.SetInteger("AnimParameter", 9); speed = 0.1f; calculatedforce = speed * (50 * mainrb.mass) - mainrb.velocity.y; mainrb.AddForce(new Vector3(0, calculatedforce, 0), ForceMode.Impulse); coroutine = WaitForAirdodge(0.167f); StartCoroutine(coroutine); gravity = 8; airdodgeamount++; } else if (anim.GetBool("IsAirborn") == true && Input.GetKeyDown(KeyCode.I) && NotShielding == true && Input.GetKey(KeyCode.S) && airdodgeamount < 1 && djumping == false) { NotShielding = false; gravity = 0; anim.SetInteger("AnimParameter", 9); speed = -0.05f; calculatedforce = speed * (50 * mainrb.mass) - mainrb.velocity.y; mainrb.AddForce(new Vector3(0, calculatedforce, 0), ForceMode.Impulse); coroutine = WaitForAirdodge(0.167f); StartCoroutine(coroutine); gravity = 8; airdodgeamount++; } else if (anim.GetBool("IsAirborn") == true && Input.GetKeyDown(KeyCode.I) && NotShielding == true && airdodgeamount < 1 && djumping == false) { gravity = 0; NotShielding = false; anim.SetInteger("AnimParameter", 9); calculatedforce = 0 - mainrb.velocity.y; mainrb.AddForce(new Vector3(0, calculatedforce, 0), ForceMode.Impulse); coroutine = WaitForAirdodge(0.167f); StartCoroutine(coroutine); } Here is my entire script fixed update script as i have no idea where the problem could be. void FixedUpdate() { Physics.gravity = new Vector3(0, -gravity, 0); if (touching == true && jumping == false) { anim.SetBool("IsAirborn", false); } else if (touching == false) { anim.SetBool("IsAirborn", true); } if (anim.GetBool("IsAirborn") == false && Input.GetKeyDown(KeyCode.I) && NotShielding == true) { NotShielding = false; anim.SetInteger("AnimParameter", 6); shield.SetActive(true); coroutine = WaitForShield(0.167f); StartCoroutine(coroutine); } else if (anim.GetBool("IsAirborn") == true && Input.GetKeyDown(KeyCode.I) && NotShielding == true && Input.GetKey(KeyCode.D) && airdodgeamount < 1 && djumping == false) { NotShielding = false; gravity = 0; anim.SetInteger("AnimParameter", 9); speed = 30f; calculatedforce = speed * (50 * mainrb.mass); mainrb.AddForce(new Vector3(calculatedforce, 0, 0)); coroutine = WaitForAirdodge(0.167f); StartCoroutine(coroutine); gravity = 8; airdodgeamount++; } else if (anim.GetBool("IsAirborn") == true && Input.GetKeyDown(KeyCode.I) && NotShielding == true && Input.GetKey(KeyCode.A) && airdodgeamount < 1 && djumping == false) { NotShielding = false; gravity = 0; anim.SetInteger("AnimParameter", 9); speed = -30f; calculatedforce = speed * (50 * mainrb.mass); mainrb.AddForce(new Vector3(calculatedforce, 0, 0)); coroutine = WaitForAirdodge(0.167f); StartCoroutine(coroutine); gravity = 8; airdodgeamount++; } else if (anim.GetBool("IsAirborn") == true && Input.GetKeyDown(KeyCode.I) && NotShielding == true && Input.GetKey(KeyCode.W) && airdodgeamount < 1 && djumping == false) { NotShielding = false; gravity = 0; anim.SetInteger("AnimParameter", 9); speed = 0.1f; calculatedforce = speed * (50 * mainrb.mass) - mainrb.velocity.y; mainrb.AddForce(new Vector3(0, calculatedforce, 0), ForceMode.Impulse); coroutine = WaitForAirdodge(0.167f); StartCoroutine(coroutine); gravity = 8; airdodgeamount++; } else if (anim.GetBool("IsAirborn") == true && Input.GetKeyDown(KeyCode.I) && NotShielding == true && Input.GetKey(KeyCode.S) && airdodgeamount < 1 && djumping == false) { NotShielding = false; gravity = 0; anim.SetInteger("AnimParameter", 9); speed = -0.05f; calculatedforce = speed * (50 * mainrb.mass) - mainrb.velocity.y; mainrb.AddForce(new Vector3(0, calculatedforce, 0), ForceMode.Impulse); coroutine = WaitForAirdodge(0.167f); StartCoroutine(coroutine); gravity = 8; airdodgeamount++; } else if (anim.GetBool("IsAirborn") == true && Input.GetKeyDown(KeyCode.I) && NotShielding == true && airdodgeamount < 1 && djumping == false) { gravity = 0; NotShielding = false; anim.SetInteger("AnimParameter", 9); calculatedforce = 0 - mainrb.velocity.y; mainrb.AddForce(new Vector3(0, calculatedforce, 0), ForceMode.Impulse); coroutine = WaitForAirdodge(0.167f); StartCoroutine(coroutine); } else if (anim.GetBool("IsAirborn") == false && Input.GetKeyDown(KeyCode.W) && NotShielding == true) { jumping = true; anim.SetBool("IsAirborn", true); anim.SetInteger("AnimParameter", 3); coroutine = WaitForJump(0.3f); StartCoroutine(coroutine); } else if (anim.GetBool("IsAirborn") == true && Input.GetKeyDown(KeyCode.W) && doublejumpamount < 1f && NotShielding == true) { djumping = true; anim.SetInteger("AnimParameter", 5); anim.SetBool("IsAirborn", true); coroutine = WaitForDJump(0.2f); StartCoroutine(coroutine); doublejumpamount++; } else if (anim.GetBool("IsAirborn") == true && Input.GetKey(KeyCode.S) && NotShielding == true) { gravity = 15; } else if (Input.GetKey(KeyCode.A) && Input.GetKey(KeyCode.LeftShift) && anim.GetBool("IsAirborn") == false && NotShielding == true) { anim.SetInteger("AnimParameter", 2); transform.eulerAngles = new Vector3(0, 270, 0); speed = -1; calculatedforce = speed * (50 * mainrb.mass); mainrb.AddForce(new Vector3(calculatedforce, 0, 0)); } else if (Input.GetKey(KeyCode.D) && Input.GetKey(KeyCode.LeftShift) && anim.GetBool("IsAirborn") == false && NotShielding == true) { anim.SetInteger("AnimParameter", 2); transform.eulerAngles = new Vector3(0, 90, 0); speed = 1; calculatedforce = speed * (50 * mainrb.mass); mainrb.AddForce(new Vector3(calculatedforce, 0, 0)); } else if (Input.GetKeyDown(KeyCode.A) && anim.GetBool("IsAirborn") == false && NotShielding == true) { anim.SetInteger("AnimParameter", 1); transform.eulerAngles = new Vector3(0, 270, 0); speed = -10; calculatedforce = speed * (50 * mainrb.mass); mainrb.AddForce(new Vector3(calculatedforce, 0, 0)); } else if (Input.GetKeyDown(KeyCode.D) && anim.GetBool("IsAirborn") == false && NotShielding == true) { anim.SetInteger("AnimParameter", 1); transform.eulerAngles = new Vector3(0, 90, 0); speed = 10; calculatedforce = speed * (50 * mainrb.mass); mainrb.AddForce(new Vector3(calculatedforce, 0, 0)); } else if (Input.GetKey(KeyCode.A) && anim.GetBool("IsAirborn") == false && NotShielding == true) { anim.SetInteger("AnimParameter", 1); transform.eulerAngles = new Vector3(0, 270, 0); speed = -2; calculatedforce = speed * (50 * mainrb.mass); mainrb.AddForce(new Vector3(calculatedforce, 0, 0)); } else if (Input.GetKey(KeyCode.D) && anim.GetBool("IsAirborn") == false && NotShielding == true) { anim.SetInteger("AnimParameter", 1); transform.eulerAngles = new Vector3(0, 90, 0); speed = 2; calculatedforce = speed * (50 * mainrb.mass); mainrb.AddForce(new Vector3(calculatedforce, 0, 0)); } else if (Input.GetKey(KeyCode.A) && anim.GetBool("IsAirborn") == true && NotShielding == true) { speed = -2; calculatedforce = speed * (50 * mainrb.mass); mainrb.AddForce(new Vector3(calculatedforce, 0, 0)); } else if (Input.GetKey(KeyCode.D) && anim.GetBool("IsAirborn") == true && NotShielding == true) { speed = 2; calculatedforce = speed * (50 * mainrb.mass); mainrb.AddForce(new Vector3(calculatedforce, 0, 0)); } else if (Input.GetKey(KeyCode.S) && NotShielding == false) { anim.SetInteger("AnimParameter", 8); shield.SetActive(false); coroutine = WaitForSpotdodge(0.2f); StartCoroutine(coroutine); } else if (NotShielding == true) { anim.SetInteger("AnimParameter", 0); gravity = 8; } else { } if (wanttojump == true) { if (Input.GetKey(KeyCode.W)) { jumping = false; jumpspeed = 1f; calculatedforce = jumpspeed * (5 * mainrb.mass) - (mainrb.velocity.y * 1); mainrb.AddForce(new Vector3(0, calculatedforce, 0), ForceMode.Impulse); } else if (!Input.GetKey(KeyCode.W)) { jumping = false; jumpspeed = 0.7f; calculatedforce = jumpspeed * (5 * mainrb.mass) - (mainrb.velocity.y * 1); mainrb.AddForce(new Vector3(0, calculatedforce, 0), ForceMode.Impulse); } anim.SetInteger("AnimParameter", 4); anim.SetBool("IsAirborn", true); wanttojump = false; } if (resetgravity == true) { gravity = 8; resetgravity = false; } if (wanttodjump == true) { gravity = 0; jumpspeed = 1; calculatedforce = jumpspeed * (5 * mainrb.mass) - (mainrb.velocity.y * 1); mainrb.AddForce(new Vector3(0, calculatedforce, 0), ForceMode.Impulse); anim.SetInteger("AnimParameter", 4); wanttodjump = false; coroutine = GravityDelay(0.1f); StartCoroutine(coroutine); djumping = false; } touching = false; } Thank you in advance.

Viewing all articles
Browse latest Browse all 1264

Trending Articles



<script src="https://jsc.adskeeper.com/r/s/rssing.com.1596347.js" async> </script>