Перемещение дочернего GameObject внутри движущегося родительского GameObject - PullRequest
0 голосов
/ 29 сентября 2019

Я пытаюсь создать игру типа SHMUP, в которой мир непрерывно движется вперед, пока космический корабль и камера игрока остаются на месте.Я создал пустой игровой объект с именем Moving World и прикрепил к нему следующий скрипт:

public class movingWorldController : MonoBehaviour
{
    private float movementSpeed = 5f;

    void Update()
    {
        transform.position = transform.position + new Vector3(0, 0, movementSpeed * Time.deltaTime);
    }
}

Затем я добавил камеру и космический корабль в качестве дочерних объектов этого объекта, и в результате они действительно перемещаются с помощьюдвижущийся объект мира.Тем не менее, у меня также есть сценарий, прикрепленный к космическому кораблю, чтобы он мог двигаться в соответствии с входом игрока, и если я включу сценарий выше, корабль перестает отвечать на вход игрока.Сценарий корабля выглядит следующим образом:

public class ShipController : MonoBehaviour
{
    public Rigidbody rb;
    public float moveSpeed = 5f;
    private Vector3 movement;

    void Update()
    {
        movement.x = Input.GetAxisRaw("Horizontal");
        movement.z = Input.GetAxisRaw("Vertical");
    }

    private void FixedUpdate()
    {
        rb.MovePosition(rb.position + movement * moveSpeed * Time.deltaTime);
    }
}

Контроллер корабля отлично работает, когда сценарий перемещения по миру отключен, поэтому я подозреваю, что сценарий мира каким-то образом перезаписывает позицию космического корабля.Как я могу решить это?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...