How do you link Input.GetKeyDown in an update function to rigidbody 2D physics in fixed update. Below is the script I have so far with everything in the update function to give an idea of what I want to do.
using UnityEngine; using System.Collections;
public class Movement : MonoBehaviour {
public Rigidbody2D rigi;
public float cruiseSpeed = 1.0f; //constant speed to the right
public float upThrust = 150.0f; //upward thrust applied upon hitting Space
// Use this for initialization
void Start () {
rigi = GetComponent<Rigidbody2D>();
rigi.velocity = Vector2.right * cruiseSpeed;
}
// Update is called once per frame
void Update () {
if (Input.GetKeyDown (KeyCode.Space)) {
rigi.AddForce (Vector2.up * upThrust);
}
}
}
If you're making adjustments to rigidbodies you will generally want to use FixedUpdate ins$$anonymous$$d of Update.
In theory yes but if he wants to apply a 'oneshot' force when pressing a key and wants the results to be consistent, he has a point. Either this needs to be done in Update() or Input needs to be filtered so that AddForce happens in just one FixedUpdate()
I always cringe a bit when people say 'all physics stuff needs to be done in FixedUpdate' as reading input in FixedUpdate can give pretty inconsistent results (which is why he's asking i believe)
If there's nothing else besides this one AddForce in Update, i think there's no need to change it. But I'm willing to listen to other opinions :)
Your answer
Follow this Question
Related Questions
What is the difference between Update() , LateUpdate() , FixedUpdate(), and when i should use them 3 Answers
How to do Inputs in Update and AddForce in FixedUpdate, infinite jumps ? 0 Answers
Do something after the next physics step (not the frame) 0 Answers
Change Fixed Timestep? 1 Answer
Maximum Delta Time 0 Answers