Рустам Абдрашитов
Мыслитель
(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й играл на стрелках и при этом на одном компьютере и клавиатуре
А также как можно разделить экран на 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;
}
}