Почему контроллер плеера Rigidbody не работает? Я не могу передвигать плеер - PullRequest
1 голос
/ 16 апреля 2020

Этот скрипт прикреплен к моему плееру с компонентом твердого тела. Твердое тело использует гравитацию и является кинематографическим. c установлены на длительность.

using System.Collections;
using System.Collections.Generic;
using UnityEngine;

public class RigidbodyPlayercontroller : MonoBehaviour
{
    Rigidbody rb;
    public float speed;

    void Start()
    {
        rb = GetComponent<Rigidbody>();
    }
    void FixedUpdate()
    {
        float mH = Input.GetAxis("Horizontal");
        float mV = Input.GetAxis("Vertical");
        rb.velocity = new Vector3(mH * speed, rb.velocity.y, mV * speed);
    }
}

Но игрок не двигается, он ничего не делает. Я пробовал значение скорости 1, а также 100.

Ответы [ 2 ]

2 голосов
/ 16 апреля 2020

Установка velocity для кинемати c Жесткое тело не вызывает никакого эффекта. Как сказано в документации, используйте MovePosition , чтобы изменить положение кинемати c Rigidbody .

using System.Collections;
using System.Collections.Generic;
using UnityEngine;

public class PlayerController: MonoBehaviour
{
   public float speed;

   private float vertical;
   private float horizontal;

   private Rigidbody rb;

   void Start()
   {
      rb = GetComponent < Rigidbody > ();
   }

   void Update()
   {
      vertical = Input.GetAxis("Vertical") * speed;
      horizontal = Input.GetAxis("Horizontal") * speed;
   }

   void FixedUpdate()
   {
      rb.MovePosition(
         transform.position +
         transform.right * horizontal * Time.fixedDeltaTime +
         transform.forward * vertical * Time.fixedDeltaTime
      );
   }
}
1 голос
/ 16 апреля 2020

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

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