Игрок движется вперед при перемещении в платформере Unity3D [закрыто]C#

Место общения программистов C#
Ответить
Anonymous
 Игрок движется вперед при перемещении в платформере Unity3D [закрыто]

Сообщение Anonymous »

Я делаю 3D -платформер в Unity, где вы можете двигаться, смотреть и прыгать. Но по какой -то причине, когда я ничего не нажимаю, позиция игрока постоянно постепенно меняется вместо того, чтобы просто оставаться на месте. Вот мой код: < /p>
using Unity.VisualScripting;
using UnityEngine;
using UnityEngine.InputSystem;

public class PlayerBehavior : MonoBehaviour
{
public Rigidbody rb;
public InputAction move, jump, look;
private Vector2 keyMove, inputLook;
private bool keyJump;
public float moveSpeed = 8f;
public float jumpHeight = 12f;
public float lookSpeed = 2f, pitch = 0f, yaw = 0f;

private void OnEnable()
{
move.Enable();
jump.Enable();
look.Enable();
}

private void OnDisable()
{
move.Disable();
jump.Disable();
look.Disable();
}

private void Start()
{
rb = GetComponent();
}

private void Update()
{
keyMove = move.ReadValue();
if (keyMove.magnitude < 0.2f) { keyMove = Vector2.zero; }

Vector3 moveDirection = transform.forward * keyMove.y + transform.right * keyMove.x;
moveDirection.y = 0f;
rb.linearVelocity = new Vector3(
moveDirection.x * moveSpeed,
rb.linearVelocity.y,
moveDirection.z * moveSpeed
);

keyJump = jump.ReadValue() > 0.5f;
if (keyJump)
{
rb.linearVelocity = new Vector3(
rb.linearVelocity.x,
jumpHeight,
rb.linearVelocity.z
);
}

inputLook = look.ReadValue();
if (inputLook.magnitude < 0.05f)
{
inputLook = Vector2.zero;
}

// This is necessary because the mouse input detects the change in mousepos.
// And we need to accumulate (integrate) these changes to get the actual θ value we want
yaw += inputLook.x * lookSpeed;
pitch -= inputLook.y * lookSpeed;

transform.rotation = Quaternion.Euler(pitch, yaw, transform.rotati

< /code>
Я пытался вручную попытаться установить скорость на ноль, вход перемещения в ноль, я попытался увидеть, является ли это переводчиком вращения. Это не. Я пытался установить линейное демпфирование, пользовательский физический материал с большим трением. Но до сих пор ничего не сработало. Это всего лишь дюймы вперед постоянно. Не могли бы вы помочь мне с этой проблемой.


Подробнее здесь: https://stackoverflow.com/questions/797 ... platformer
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

Вернуться в «C#»