我不知道天气或不使用时间。deltaTime我认为这将是很好的实现它,但我不知道如何,我已经尝试过,但我搞砸了一些东西
using UnityEngine;
using UnityEngine.SceneManagement;
public class PlayerMovement : MonoBehaviour
{
[SerializeField] private float horSpeed;
[SerializeField] private float vertSpeed;
private Rigidbody2D rb;
private bool isJumping;
private void Start()
{
rb = GetComponent<Rigidbody2D>();
}
private void Update()
{
// we store the initial velocity, which is a struct.
var v = rb.velocity;
if (Input.GetKey(KeyCode.Space) && !isJumping)
{
v.y = vertSpeed * Time.deltaTime;
isJumping = true;
}
if (Input.GetKey(KeyCode.A))
v.x = -horSpeed * Time.deltaTime;
if (Input.GetKey(KeyCode.D))
v.x = horSpeed * Time.deltaTime;
if (Input.GetKey(KeyCode.S))
v.y = -vertSpeed * Time.deltaTime;
rb.velocity = v;
if(Input.GetKey(KeyCode.Escape))
SceneManager.LoadScene(0);
}
private void OnCollisionEnter2D(Collision2D collision)
{
isJumping = false;
}
}
当我试图添加它时,我的角色只是移动得非常慢
3条答案
按热度按时间rxztt3cl1#
增加vertSpeed和horSpeed的速度,或者可以使用rb.AddForce()
fzsnzjdm2#
将输入向量与时间相乘。DeltaTime使其与帧速率无关。
k5ifujac3#
试试我的代码。它没有跳跃,需要刚体和碰撞2D。我使它为2D RPG游戏。