@andres1221

Как исправить странное движение платформы при воздействии сверху на нее объекта?

начал изучать сишарп позавчера и вчера юнити, сходу, код:
using System.Collections;
using System.Collections.Generic;
using UnityEngine;

public class MovementScript : MonoBehaviour
{
    public Rigidbody rb;
    public float runSpeed;

    protected bool runLeft = false;
    protected bool runRight = false;

    // Запускает все процессы которые нужно выполнять каждый тик
    void Update()
    {
        if (Input.GetKey(KeyCode.D))
        {
            transform.Translate(transform.right * runSpeed * Time.deltaTime);
           
        }
        // Еслиф - чтоб были стрелки помимо клавиш васд
        else if (Input.GetKey(KeyCode.RightArrow)) 
        {
            transform.Translate(transform.right * runSpeed * Time.deltaTime);
            
        }
        if (Input.GetKey(KeyCode.A))
        {
            transform.Translate(transform.right * runSpeed * Time.deltaTime * -1);

        }
        else if (Input.GetKey(KeyCode.LeftArrow))
        {
            transform.Translate(transform.right * runSpeed * Time.deltaTime * -1);
        }
         if(Input.GetKey(KeyCode.W))
        {
            transform.Translate(transform.up * runSpeed * Time.deltaTime);
        }
         else if(Input.GetKey(KeyCode.UpArrow))
        {
            transform.Translate(transform.up * runSpeed * Time.deltaTime);
        }
         if (Input.GetKey(KeyCode.S))
        {
            transform.Translate(transform.up * runSpeed * Time.deltaTime * -1);

        }
         else if(Input.GetKey(KeyCode.DownArrow))
        {
            transform.Translate(transform.up * runSpeed * Time.deltaTime * -1);
        }
    }     
    
}

настройки платформы: 65bcda1c70bad777677096.png
и вот такой странный баг: https://www.youtube.com/watch?v=YfLTbvBv1LE
а так же начинает ротироваться куб и управление ломается.. что делать? Хочу сделать игру лабиринт
  • Вопрос задан
  • 89 просмотров
Пригласить эксперта
Ответы на вопрос 1
LifeGameYT
@LifeGameYT
UE | Developer
Двигай игрока а не лабиринт.

Или используй этот код:

using UnityEngine;

public class MovementScript : MonoBehaviour
{
    public float runSpeed;
    private Rigidbody2D rb;

    void Start()
    {
        // Добавляем Rigidbody2D к объекту
        rb = gameObject.AddComponent<Rigidbody2D>();
        rb.gravityScale = 0; // Отключаем гравитацию, если она не нужна
    }

    void Update()
    {
        float horizontalInput = Input.GetAxis("Horizontal");
        float verticalInput = Input.GetAxis("Vertical");

        Vector2 movement = new Vector2(horizontalInput, verticalInput) * runSpeed * Time.deltaTime;
        transform.Translate(movement);

        // Перемещаем объект с использованием Rigidbody2D, чтобы учесть коллизии
        rb.MovePosition(rb.position + movement);
    }
}
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы