


Программирование
+3Скрипт выдает ошибки CS0103
123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111
в скрипте должно быть стандартное управление CharacterController вперед/назад/влево/вправо/
задумка такова что голова(меш) персонажа должна крутиться вслед за камерой только по оси Y, а всё остальное тело вращаться вслед за камерой только по оси X, при этом голова должна иметь какие не какие ограничения по вращению.
задумка не плохая но в скриптах буквально неделю, воплощение даётся с трудом, а найти ребят которые в один проект (на ютубе и различных форумах) сделают сразу всё что мне нужно, невозможно
текст ошибок:
Assets\AllScript\Player\PlayerController.cs(42,9): error CS0103: The name 'rotationX' does not exist in the current context
Assets\AllScript\Player\PlayerController.cs(43,9): error CS0103: The name 'rotationX' does not exist in the current context
Assets\AllScript\Player\PlayerController.cs(43,33): error CS0103: The name 'rotationX' does not exist in the current context
Assets\AllScript\Player\PlayerController.cs(45,52): error CS0103: The name 'rotationX' does not exist in the current context
using UnityEngine;
using System.Collections;
using System.Collections.Generic;
public class PlayerController : MonoBehaviour
{
public enum RotationAxes {
MouseXAndY = 0,
MouseX = 1,
MouseY = 2
}
public RotationAxes axes = RotationAxes.MouseXAndY;
public float sensitivity = 2.0f;
private float _rotationX = 0;
public float moveSpeed = 20f;
public GameObject bulletPrefab;
public Transform firePoint;
public float speed = 5.0f; // Скорость движения
public float rotationSpeed = 3.0f; // Скорость поворота
private bool isGamePaused = false;
void Start()
{
Cursor.visible = false; // Скрываем курсор при начале игры
Cursor.lockState = CursorLockMode.Locked; // Блокируем курсор внутри игрового окна
Rigidbody body = GetComponent<Rigidbody>();
if (body != null)
body.freezeRotation = true;
}
void Update()
{
float mouseX = Input.GetAxis("Mouse X") * sensitivity;
float mouseY = Input.GetAxis("Mouse Y") * sensitivity;
rotationX -= mouseY;
rotationX = Mathf.Clamp(rotationX, -90, 90); // Ограничиваем угол вращения
transform.localRotation = Quaternion.Euler(rotationX, 0, 0); // Вращаем голову по вертикали
transform.parent.Rotate(Vector3.up * mouseX); // Вращаем тело по горизонтали
// Стрельба
if (Input.GetButtonDown("Fire1"))
{
Shoot();
}
if (Input.GetKeyDown(KeyCode.Escape))
{
if (isGamePaused)
{
ResumeGame();
}
else
{
PauseGame();
}
if(isGamePaused && Input.GetMouseButtonDown(0)) // Проверяем, было ли нажатие кнопки мыши
{
Cursor.lockState = CursorLockMode.Locked; // Блокируем курсор внутри игрового окна
}
}
}
void Shoot()
{
Instantiate(bulletPrefab, firePoint.position, firePoint.rotation);
// Добавьте звук выстрела или эффект взрыва
}
void PauseGame()
{
Cursor.visible = true; // Показываем курсор при паузе
Cursor.lockState = CursorLockMode.None; // Разблокируем курсор, чтобы он мог покинуть игровое окно
Time.timeScale = 0f; // Останавливаем время
isGamePaused = true;
}
void ResumeGame()
{
Cursor.visible = false; // Скрываем курсор при продолжении игры
Cursor.lockState = CursorLockMode.Locked; // Блокируем курсор внутри игрового окна
Time.timeScale = 1f; // Возобновляем время
isGamePaused = false;
}
}
По дате
По рейтингу
Ошибки CS0103 указывают на то, что имя “rotationX” не существует в текущем контексте. Вам необходимо проверить правильность написания имени переменной и ее наличие в коде.
Также, проверьте, правильно ли вы используете переменные в коде. Убедитесь, что вы не пытаетесь использовать переменные, которые не были объявлены или инициализированы.
Поставьте вместо "rotationX" "_rotationX"
C# это не пистон, если чо... и это не скрипт