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

Что делать у меня в коде указано что бы я в инспекторе джостик указал у меня пак джостиков а код их не видит.

Тимур Кулахметов Ученик (83), открыт 2 недели назад
вот код:
using UnityEngine;
using Mirror;

public class PlayerController : NetworkBehaviour
{
public float speed = 5.0f;
public float jumpForce = 5.0f;
private bool isGrounded;
public Joystick joystick;

private Rigidbody rb;
public float rotationSpeed = 2f;
private Camera mainCam;
public Vector3 cameraOffset = new Vector3(0, 2, -5); // Смещение камеры

private void Awake()
{
mainCam = Camera.main;
}

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

}
void Update()
{
if (!isLocalPlayer) return;

if (joystick == null)
{
Debug.LogError("Joystick не назначен в инспекторе!");
return;
}

float horizontal = joystick.Horizontal;
float vertical = joystick.Vertical;

Vector3 direction = new Vector3(horizontal, 0, vertical).normalized;

if (direction.magnitude >= 0.1f)
{
Vector3 moveDirection = Quaternion.Euler(0, mainCam.transform.eulerAngles.y, 0) * direction;
transform.Translate(moveDirection * speed * Time.deltaTime, Space.World );
Quaternion toRotation = Quaternion.LookRotation(moveDirection, Vector3.up);
transform.rotation = Quaternion.RotateTowards(transform.rotation, toRotation, rotationSpeed * Time.deltaTime);
}

if (Input.GetButtonDown("Jump") && isGrounded)
{
rb.AddForce(Vector3.up * jumpForce, ForceMode.Impulse);
}

CameraMovement();
}


private void CameraMovement()
{
Vector3 desiredPosition = transform.position + cameraOffset;
mainCam.transform.position = Vector3.Lerp(mainCam.transform.position, desiredPosition, Time.deltaTime * 3);
mainCam.transform.LookAt(transform.position);
}

void OnCollisionStay(Collision collision)
{
isGrounded = true;
}

void OnCollisionExit(Collision collision)
{
isGrounded = false;
}
}
1 ответ
Твой Профессор Мастер (1939) 2 недели назад
А тип Joystick точно совместим? Прост в твоем коде joystick звучит как какой-то public Joystick joystick. Он говорит, что тип должен быть именно Joystick. Если тип не совпадает, измени тип переменной joystick.
Добавь потом проверку в начале работы. Имею ввиду в сам метод start
 void Start() 
{
rb = GetComponent<Rigidbody>();
if (joystick == null)
{
Debug.LogError("Joystick не назначен в инспекторе!");
}
}
Надо бы понять, происходит ли потеря ссылки на джойстик после старта игры
Тимур КулахметовУченик (83) 2 недели назад
а на какой тип изменить?
Твой Профессор Мастер (1939) Тимур Кулахметов, скорее всего MobileJoystick или просто VirtualJoystick
Похожие вопросы