Я делаю игру от первого лица в Unity 5 для Xbox 360 и ПК. Maincamera - это игрок. Кроме того, я не знаю, как добавить прыжок, если кто -то скажет мне, что это тоже очень поможет. Движение работает нормально в противном случае. < /P>
Вот мой сценарий: < /p>
using UnityEngine;
[RequireComponent(typeof(Rigidbody))]
[RequireComponent(typeof(CapsuleCollider))]
public class CameraController : MonoBehaviour
{
public float moveSpeed = 5f;
public float lookSpeed = 3f;
public float arrowKeyLookSpeed = 60f;
private Rigidbody rb;
private float yaw = 0f;
private float pitch = 0f;
void Start()
{
rb = GetComponent();
rb.freezeRotation = true; // We handle rotation manually
rb.useGravity = true;
// Ensure the camera has a collider to prevent falling through the floor
if (GetComponent() == null)
{
gameObject.AddComponent();
}
}
void Update()
{
// Camera rotation (Right Stick + Arrow Keys)
float lookX = Input.GetAxis("RightStickHorizontal");
float lookY = Input.GetAxis("RightStickVertical");
yaw += lookX * lookSpeed;
pitch -= lookY * lookSpeed;
if (Input.GetKey(KeyCode.LeftArrow)) yaw -= arrowKeyLookSpeed * Time.deltaTime;
if (Input.GetKey(KeyCode.RightArrow)) yaw += arrowKeyLookSpeed * Time.deltaTime;
if (Input.GetKey(KeyCode.UpArrow)) pitch -= arrowKeyLookSpeed * Time.deltaTime;
if (Input.GetKey(KeyCode.DownArrow)) pitch += arrowKeyLookSpeed * Time.deltaTime;
pitch = Mathf.Clamp(pitch, -80f, 80f);
transform.rotation = Quaternion.Euler(pitch, yaw, 0f);
}
void FixedUpdate()
{
// Movement with Left Stick / WASD (world-space, independent of camera rotation)
float moveX = Input.GetAxis("Horizontal"); // A/D or Left Stick X
float moveZ = Input.GetAxis("Vertical"); // W/S or Left Stick Y
Vector3 move = new Vector3(moveX, 0f, moveZ).normalized; // world axes
Vector3 targetVelocity = move * moveSpeed;
// Preserve vertical velocity for gravity
targetVelocity.y = rb.velocity.y;
rb.velocity = targetVelocity;
}
}
< /code>
Есть идеи, как это исправить? Я ожидал, что это просто осмотрется.
Подробнее здесь: https://stackoverflow.com/questions/797 ... the-player
Оглядываясь вокруг движения игрока [закрыто] ⇐ C#
Место общения программистов C#
-
Anonymous
1759185578
Anonymous
Я делаю игру от первого лица в Unity 5 для Xbox 360 и ПК. Maincamera - это игрок. Кроме того, я не знаю, как добавить прыжок, если кто -то скажет мне, что это тоже очень поможет. Движение работает нормально в противном случае. < /P>
Вот мой сценарий: < /p>
using UnityEngine;
[RequireComponent(typeof(Rigidbody))]
[RequireComponent(typeof(CapsuleCollider))]
public class CameraController : MonoBehaviour
{
public float moveSpeed = 5f;
public float lookSpeed = 3f;
public float arrowKeyLookSpeed = 60f;
private Rigidbody rb;
private float yaw = 0f;
private float pitch = 0f;
void Start()
{
rb = GetComponent();
rb.freezeRotation = true; // We handle rotation manually
rb.useGravity = true;
// Ensure the camera has a collider to prevent falling through the floor
if (GetComponent() == null)
{
gameObject.AddComponent();
}
}
void Update()
{
// Camera rotation (Right Stick + Arrow Keys)
float lookX = Input.GetAxis("RightStickHorizontal");
float lookY = Input.GetAxis("RightStickVertical");
yaw += lookX * lookSpeed;
pitch -= lookY * lookSpeed;
if (Input.GetKey(KeyCode.LeftArrow)) yaw -= arrowKeyLookSpeed * Time.deltaTime;
if (Input.GetKey(KeyCode.RightArrow)) yaw += arrowKeyLookSpeed * Time.deltaTime;
if (Input.GetKey(KeyCode.UpArrow)) pitch -= arrowKeyLookSpeed * Time.deltaTime;
if (Input.GetKey(KeyCode.DownArrow)) pitch += arrowKeyLookSpeed * Time.deltaTime;
pitch = Mathf.Clamp(pitch, -80f, 80f);
transform.rotation = Quaternion.Euler(pitch, yaw, 0f);
}
void FixedUpdate()
{
// Movement with Left Stick / WASD (world-space, independent of camera rotation)
float moveX = Input.GetAxis("Horizontal"); // A/D or Left Stick X
float moveZ = Input.GetAxis("Vertical"); // W/S or Left Stick Y
Vector3 move = new Vector3(moveX, 0f, moveZ).normalized; // world axes
Vector3 targetVelocity = move * moveSpeed;
// Preserve vertical velocity for gravity
targetVelocity.y = rb.velocity.y;
rb.velocity = targetVelocity;
}
}
< /code>
Есть идеи, как это исправить? Я ожидал, что это просто осмотрется.
Подробнее здесь: [url]https://stackoverflow.com/questions/79750646/looking-around-moves-the-player[/url]
Ответить
1 сообщение
• Страница 1 из 1
Перейти
- Кемерово-IT
- ↳ Javascript
- ↳ C#
- ↳ JAVA
- ↳ Elasticsearch aggregation
- ↳ Python
- ↳ Php
- ↳ Android
- ↳ Html
- ↳ Jquery
- ↳ C++
- ↳ IOS
- ↳ CSS
- ↳ Excel
- ↳ Linux
- ↳ Apache
- ↳ MySql
- Детский мир
- Для души
- ↳ Музыкальные инструменты даром
- ↳ Печатная продукция даром
- Внешняя красота и здоровье
- ↳ Одежда и обувь для взрослых даром
- ↳ Товары для здоровья
- ↳ Физкультура и спорт
- Техника - даром!
- ↳ Автомобилистам
- ↳ Компьютерная техника
- ↳ Плиты: газовые и электрические
- ↳ Холодильники
- ↳ Стиральные машины
- ↳ Телевизоры
- ↳ Телефоны, смартфоны, плашеты
- ↳ Швейные машинки
- ↳ Прочая электроника и техника
- ↳ Фототехника
- Ремонт и интерьер
- ↳ Стройматериалы, инструмент
- ↳ Мебель и предметы интерьера даром
- ↳ Cантехника
- Другие темы
- ↳ Разное даром
- ↳ Давай меняться!
- ↳ Отдам\возьму за копеечку
- ↳ Работа и подработка в Кемерове
- ↳ Давай с тобой поговорим...
Мобильная версия