Я только что начал небольшой проект, где я хочу, чтобы игрок контролировал корабль с точки зрения сверху вниз. Я хочу, чтобы все это использовало движение, основанное на физике.Физика сверхурочного космического полета - AddForce - Объект перемещается с центра быстрее, чем быстрее
Моя проблема заключается в том, что когда я добавляю силу к твердому корпусу, объект, к которому он прикреплен, кажется, отходит от своего положения, тем быстрее он идет. Однако transform.positions, похоже, в порядке.
Я собрал this little unity package. Если вы нажмете W, корабль будет двигаться вверх и вниз по центру, чем дольше вы нажимаете W. S движется в другом направлении.
Код довольно прост:
using UnityEngine;
using System.Collections;
public class TestController : MonoBehaviour {
public float mainThrust = 100;
private Vector3 cameraOffset = new Vector3(0f, 0f, 150f);
private new Rigidbody rigidbody;
void Start() {
rigidbody = GetComponent<Rigidbody>();
}
void FixedUpdate() {
float axisVertical = Input.GetAxis("Vertical");
Vector2 force = new Vector2(0f, axisVertical) * mainThrust * Time.fixedDeltaTime;
rigidbody.AddRelativeForce(force, ForceMode.Impulse);
Camera.main.transform.position = rigidbody.transform.position - cameraOffset;
Debug.Log("camPos: " + Camera.main.transform.position
+ " - rbPos: " + rigidbody.transform.position);
}
}
Любая помощь приветствуется.
Спасибо, Нико
Это помогло бы, если бы вы могли предоставить скриншоты/видео это, так как я не уверен на 100% в вашей проблеме. Тем не менее, я подозреваю, что ваша камера просто отстает от вашего игрового объекта из-за порядка выполнения ваших скриптов, но я могу ошибаться. –
Кстати, вы можете сделать камеру ребенком корабля, и она будет следовать за ней автоматом. – code11
[Видео] (https://youtu.be/12z526xrUpM). Камера, похоже, не проблема. Присоединение камеры к объекту приводит к такому же поведению. –