c# - 我的 Jump 运行不佳 C# Unity 2D 平台
问题描述
嗨,在了解了如何实现跳转后,我正在执行我的播放器控制器脚本,我最终得到了这些:
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
public class PlayerController : MonoBehaviour
{
public float speed;
private Rigidbody2D rb;
private Vector2 moveVelocity;
private float jumpVelocity;
void Start() {
rb = GetComponent<Rigidbody2D>();
}
void Update() {
bool jump = Input.GetKeyDown(KeyCode.Space);
if (jump) {
jumpVelocity = 5;
}
else
jumpVelocity = 0;
Vector2 moveInput = new Vector2(Input.GetAxis("Horizontal"), jumpVelocity);
moveVelocity = moveInput * speed;
}
void FixedUpdate() {
rb.MovePosition(rb.position + moveVelocity * Time.fixedDeltaTime);
}
}
你有什么改进它的秘诀吗?
解决方案
您可以使用 AddForce 而不是 MovePosition 与 ForceMode2D.Impulse 属性。这将是一个更好的跳跃机制。
例子:
rigidbody2D.AddForce(new Vector2(0, jumpVelocity), ForceMode2D.Impulse);
推荐阅读
- c# - How to ignore a file while using FileSystemWatcher and the events it triggers from modifying/changing the folder it's in?
- javascript - leetcode 79 Word Search (using JavaScript)
- reactjs - useQuery 有条件地呈现数据
- python - 在 Python 中,两个或多个连续的成员运算符按什么顺序处理?
- javascript - 如何在 Dart 中创建 Web 组件
- python - API 调用时出现 400 错误请求
- c - PIC18 上的多个 SPI 配置
- reactjs - 应用程序与 docker-compose 反应
- haskell - Haskell 添加多态类型
- java - 如何在 spigot 插件中使用 discord4j