Mail.ruПочтаМой МирОдноклассникиВКонтактеИгрыЗнакомстваНовостиКалендарьОблакоЗаметкиВсе проекты

Как переназначить управление машиной в скрипте C# в юнити, с WASD на стрелки?

Толя Аксимов Ученик (176), открыт 1 неделю назад
Как переназначить управление машиной в скрипте C# в юнити, с WASD на стрелки?
А также как можно разделить экран на 2 части чтобы была игра на 2их


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


public class CarController : MonoBehaviour
{
[SerializeField] private Transform _transformFL;
[SerializeField] private Transform _transformFR;
[SerializeField] private Transform _transformRL;
[SerializeField] private Transform _transformRR;

[SerializeField] private WheelCollider _colliderFL;
[SerializeField] private WheelCollider _colliderFR;
[SerializeField] private WheelCollider _colliderRL;
[SerializeField] private WheelCollider _colliderRR;
[SerializeField] private float _force;
[SerializeField] private float _maxAngle;


private void FixedUpdate()
{

_colliderFL.motorTorque = Input.GetAxis("Vertical") * _force;
_colliderFR.motorTorque = Input.GetAxis("Vertical") * _force;


if (Input.GetKey( KeyCode.Space ))
{

_colliderFL.brakeTorque = 3000f;
_colliderFR.brakeTorque = 3000f;
_colliderRL.brakeTorque = 3000f;
_colliderRR.brakeTorque = 3000f;
}
else
{

_colliderFL.brakeTorque = 0f;
_colliderFR.brakeTorque = 0f;
_colliderRL.brakeTorque = 0f;
_colliderRR.brakeTorque = 0f;
}


_colliderFL.steerAngle = _maxAngle * Input.GetAxis("Horizontal");
_colliderFR.steerAngle = _maxAngle * Input.GetAxis("Horizontal");

RotateWheel(_colliderFL, _transformFL);
RotateWheel(_colliderFR, _transformFR);
RotateWheel(_colliderRL, _transformRL);
RotateWheel(_colliderRR, _transformRR);

}

private void RotateWheel(WheelCollider collider, Transform transform)
{
Vector3 position;
Quaternion rotation;

collider.GetWorldPose(out position, out rotation);

transform.rotation = rotation;

transform.position = position;
}
}
1 ответ
Рустам Абдрашитов Мыслитель (9465) 1 неделю назад
### Переназначение управления

1. **Изменение настроек ввода:**
- Перейдите в Unity в меню **Edit** -> **Project Settings** -> **Input Manager**.
- Найдите оси `Horizontal` и `Vertical` в списке.
- Измените настройки так, чтобы `Horizontal` реагировала на нажатия клавиш стрелок влево и вправо, а `Vertical` — на стрелки вверх и вниз.
- Например, для `Horizontal`:
- Параметр **Negative Button** установите на `left`.
- Параметр **Positive Button** установите на `right`.
- Для `Vertical`:
- Параметр **Negative Button** установите на `down`.
- Параметр **Positive Button** установите на `up`.

2. **Изменение кода:**
- В коде ничего менять не нужно, если вы просто переназначаете оси, так как они будут работать по умолчанию.

### Разделение экрана на два игрока

1. **Настройка камер:**
- Создайте вторую камеру в сцене, чтобы она отображала вид второго игрока.
- Настройте первую камеру для отображения левой части экрана:

Camera.main.rect = new Rect(0, 0, 0.5f, 1);

- Настройте вторую камеру для отображения правой части экрана:

Camera secondCamera = ... // Получите ссылку на вторую камеру
secondCamera.rect = new Rect(0.5f, 0, 0.5f, 1);


2. **Добавление второго игрока:**
- Создайте второй экземпляр машины и скрипта `CarController` для второго игрока.
- Измените настройки управления для второго автомобиля, чтобы они использовали другие клавиши (например, WASD), если нужно.
Толя АксимовУченик (176) 1 неделю назад
Спасибо огромное, но в 1ом я имел ввиду, чтобы 1й игрок играл на WASD, а 2й играл на стрелках и при этом на одном компьютере и клавиатуре
Похожие вопросы