- Home /
Question by
Furqan2712 · Oct 17, 2014 at 06:13 PM ·
c#androidcharacteraccelerometer
3D: how to avoid jerks in a character movement using accelerometer
hi, I have a animated bird flying at constant speed, bird moves with the movement of mobile (left, right). when i slowly move the mobile the bird movement is perfect but when mobile movement on left right is fast the bird movement is in jerks. I also use a float variable filter to avoid jerks but its not working i guess. here is my code.....!
private float speed = 10.0f;
private float filter = 5.0f;
private int maxX = 3;
private int minX = -3;
private Vector3 accel;
void Start(){
accel = Input.acceleration;
}
void Update(){
GetComponent<Rigidbody> ().AddForce (new Vector3(1000,0,0), ForceMode.Acceleration);
// filter the jerky acceleration in the variable accel:
accel = Vector3.Lerp(accel, Input.acceleration, filter * Time.deltaTime);
Vector3 dir = new Vector3(accel.x, 0, 0);
// limit dir vector to magnitude 1:
if (dir.sqrMagnitude > 1) dir.Normalize();
// move the object at the velocity defined in speed:
transform.Translate(dir * speed * Time.deltaTime);
Vector3 pos = transform.position;
// clamp new position:
pos.z = Mathf.Clamp(pos.z, minX, maxX);
//pos.y = Mathf.Clamp(pos.y, minY, maxY);
// and assign it to the object:
transform.position = pos;
any help would be appreciated.
Comment
Answer by Sm2x2Art · May 08, 2017 at 03:12 PM
Use FixedUpdate and replace Time.deltaTime with Time.smootDeltaTime.
Your answer
Follow this Question
Related Questions
Constant Input.Accelerometer Updater for Mobile? 0 Answers
Character Rotation 2 Answers
Tilt movement with Unity Android 1 Answer
Multiple Tiled GPU warning: RenderTexture color surface errors? 0 Answers