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

Скрипт на юнити 3д

Вася Смирнов Ученик (121), на голосовании 2 месяца назад
Здравствуйте, дополните пожалуйста скрипт на поворот персонажа как в играх на пк



 using UnityEngine; 

public class PlayerMovement : MonoBehaviour
{
public CharacterController controller;
public float walkSpeed = 5f;
public float runSpeed = 10f;
public float jumpHeight = 2f;
public float gravity = -9.81f;

private Vector3 velocity;
private bool isGrounded;

void Update()
{
isGrounded = controller.isGrounded;

if (isGrounded && velocity.y < 0)
{
velocity.y = 0f;
}

float moveSpeed = Input.GetKey(KeyCode.LeftShift) ? runSpeed : walkSpeed;

float moveX = Input.GetAxis("Horizontal") * moveSpeed;
float moveZ = Input.GetAxis("Vertical") * moveSpeed;

Vector3 move = transform.right * moveX + transform.forward * moveZ;
controller.Move(move * Time.deltaTime);

if (Input.GetButtonDown("Jump") && isGrounded)
{
velocity.y += Mathf.Sqrt(jumpHeight * -2f * gravity);
}

velocity.y += gravity * Time.deltaTime;
controller.Move(velocity * Time.deltaTime);
}
}
Голосование за лучший ответ
vseznaechka Мыслитель (6134) 3 месяца назад
  1. Чтобы добавить поворот персонажа в вашем скрипте на Unity, можно использовать Quaternion для вращения персонажа в направлении движения. Вот обновленный скрипт:
  2. using UnityEngine;

    public class PlayerMovement : MonoBehaviour
    {
    public CharacterController controller;
    public float walkSpeed = 5f;
    public float runSpeed = 10f;
    public float jumpHeight = 2f;
    public float gravity = -9.81f;

    private Vector3 velocity;
    private bool isGrounded;

    void Update()
    {
    isGrounded = controller.isGrounded;

    if (isGrounded && velocity.y < 0)
    {
    velocity.y = 0f;
    }

    float moveSpeed = Input.GetKey(KeyCode.LeftShift) ? runSpeed : walkSpeed;

    float moveX = Input.GetAxis("Horizontal") * moveSpeed;
    float moveZ = Input.GetAxis("Vertical") * moveSpeed;

    Vector3 move = transform.right * moveX + transform.forward * moveZ;
    controller.Move(move * Time.deltaTime);

    // Поворот персонажа в направлении движения
    if (move != Vector3.zero)
    {
    Quaternion targetRotation = Quaternion.LookRotation(move);
    transform.rotation = Quaternion.Slerp(transform.rotation, targetRotation, Time.deltaTime * 10f);
    }

    if (Input.GetButtonDown("Jump") && isGrounded)
    {
    velocity.y += Mathf.Sqrt(jumpHeight * -2f * gravity);
    }

    velocity.y += gravity * Time.deltaTime;
    controller.Move(velocity * Time.deltaTime);
    }
    }
Поворот персонажа: Добавлен код для поворота персонажа в направлении движения с использованием Quaternion.LookRotation и Quaternion.Slerp.
Плавный поворот: Персонаж будет плавно поворачиваться в сторону движения, что сделает управление более естественным.
Теперь ваш персонаж будет поворачиваться в направлении, в котором он движется, как в большинстве игр на ПК.
Вася СмирновУченик (121) 3 месяца назад
я имел ввиду мышкой поворачивать, как в шутерах
Похожие вопросы