c# - Unity 2D 以特定角度启动游戏对象而不影响速度
问题描述
我正在开发一个游戏,我需要以 2 个滑块(1 个角度滑块,1 个功率滑块)定义的角度和功率射球。我目前有这个代码来控制球的发射:
public void shoot()
{
float angle = angleSlider.GetComponent<Slider>().value;
float power = powerSlider.GetComponent<Slider>().value;
gameObject.SetActive(false);
ball.GetComponent<Rigidbody2D>().simulated = true;
Vector2 releaseVector = Quaternion.AngleAxis(angle, transform.up) * transform.forward;
ball.GetComponent<Rigidbody2D>().velocity = releaseVector * (power/3);
}
使用此当前代码,除了一件事之外,它几乎可以完美运行。当角度在 30 到 60 之间时,球发射得很好,但如果我将其设置为 0 度,则球几乎不会移动,相反,如果我将其设置为 90 度,则球以更大的力量发射。我怎样才能为所有度数设置一个恒定的速度,以便速度只受电源滑块的影响?谢谢。
解决方案
通常,您不应该velocity
直接设置刚体的 。根据Unity 文档...
在大多数情况下,您不应直接修改速度,因为这会导致不切实际的行为。
相反,您通常希望使用AddForce或AddRelativeForce 之类的 API 将物理脉冲传递给球
推荐阅读
- javascript - 有没有更有效的方法在 JavaScript 中使用 For 循环显示两个数组的总和?
- python - 绘制 multiIndex 列数据框
- javascript - 标记不响应某些触摸设备中的 on("click") 事件
- swiftui-navigationlink - 无法按下导航链接swiftui的边缘
- javascript - 如何使用 Firebase 身份验证修复登录错误
- flutter - 消费者不使用 Riverpod ChangeNotifier 重建 UI
- surveyjs - Surveyjs:获取以前的问题标题以生成问题
- python - 变量作为具有多个值的数据库表名
- python - 如何将模型和声音加载到我的可分发文件中?
- python - 如何在python的行列式中传播错误