Гравитация не работает в единстве 2D-преобразования RigidBody

Я сделал спрайт и применил 2d-компонент твердого тела, он работает нормально, как и должен, теперь я написал этот фрагмент кода, но когда я начинаю играть в игру, он работает в течение некоторого периода времени, но после этого гравитация кажется нулевой, что означает, что мое твердое тело не спускается, когда я оставляю ключи

// Update is called once per frame void Update () { if (Input.GetKey (KeyCode.LeftArrow)) { posX--; } else if (Input.GetKey (KeyCode.RightArrow)) { posX++; } if (Input.GetKey (KeyCode.UpArrow)) { posY++;
} else if (Input.GetKey (KeyCode.DownArrow)) { posY--; } angle -= Input.GetAxis ("Horizontal"); angle = Mathf.Clamp (angle, -10, 10); } void FixedUpdate() { transform.eulerAngles = new Vector3 (0,0,angle); transform.position = new Vector2 (posX * Time.deltaTime, posY * Time.deltaTime); } }
то, что я хочу сделать, это перемещать вертолет влево вправо вверх и вниз (что пользователь может контролировать), но когда пользователь не взаимодействует, я хочу, чтобы гравитация работала по умолчанию, и вертолет опускался из-за гравитации, как этого добиться? < img src="https://i.stack.imgur.com/vWQQ0.png" alt="введите здесь описание изображения">


person avinashizhere    schedule 26.04.2014    source источник


Ответы (2)


Вы перезаписываете позицию в каждом кадре, поэтому она не измеряет то, что Unity вычисляет в своей физике, вы перезаписываете, когда делаете это:

transform.position = new Vector2 (posX * Time.deltaTime, posY * Time.deltaTime);

Я не знаю, чего вы хотите добиться, но, возможно, это сработает, если после этого вы повторно примените силу гравитации с помощью traforme.AddForce(), используя массу объекта и константу гравитационного ускорения.

person Roberto    schedule 26.04.2014
comment
посмотри улучшенную версию и подскажи как этого добиться :) - person avinashizhere; 27.04.2014
comment
Я уже говорил вам, что вы переписываете положение, гравитация будет действовать в положении, но вы сбрасываете его, когда присваиваете ему значение. Вы можете либо имитировать гравитацию, применив силу после установки положения, либо просто не устанавливать положение — вместо этого вы можете применить силу вверх. - person Roberto; 27.04.2014

Вы должны использовать AddForce вместо изменения осей x и Y. Вы можете увидеть пример здесь,

Пример AddFource

person Ren DeVg    schedule 11.09.2014