Я написал функцию для моего контроллера персонажа, которая позволяет персонажу игрока выполнять действие прыжка. В данный момент я использую два монитора, один из которых - дисплей с частотой 60 Гц, в то время как pther - дисплей с частотой 120 Гц. При запуске игры на дисплее с частотой 120 Гц, функция прыжка действует так, как я ожидаю, но при работе на дисплее с частотой 60 Гц персонаж прыгает намного выше, чем я предполагал. Я знаю, что это как-то связано с использованием Time.deltatime, но я не могу понять, как правильно реализовать это в моей функции перехода. код выглядит следующим образом:
void PlayerJump()
{
if (controller.isGrounded)
{
if(Input.GetButtonDown("Jump"))
{
moveDirection.y = jumpForce;
}
else
{
moveDirection.y = fallSpeed;
}
}
moveDirection.y = moveDirection.y + (Physics.gravity.y ) ;
}
вот все, что выше предыдущей функции для дальнейшего уточнения:
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
public class platforming_controller_2D : MonoBehaviour
{
public float movementSpeed;
public float jumpForce;
public float gravityScale;
public float fallSpeed;
public double jumpGravity = (-9.81 * 0.045);
public Animator anim;
public CharacterController controller;
private Vector3 moveDirection;
void Start()
{
controller = GetComponent<CharacterController>();
anim = GetComponent<Animator>();
}
void Update()
{
PlayerMovement();
playRunAnimation();
PlayerJump();
playJumpAnimation();
controller.Move(moveDirection * Time.deltaTime);
}
void PlayerMovement()
{
//float moveVertical = Input.GetAxis("Vertical");
float moveHorizontal = Input.GetAxis("Horizontal");
Vector3 newPosition = new Vector3(moveHorizontal, 0.0f, 0.0f);
moveDirection = new Vector3(Input.GetAxis("Horizontal") * movementSpeed, moveDirection.y, 0.0f);
transform.LookAt(newPosition + transform.position);
}