c# - Unity 2d 角色控制。速度还是什么?
问题描述
我有一个通过速度控制运动的固定操纵杆,我有一个让我的角色跳跃的滑动。
固定操纵杆移动:
void FixedUpdate()
{
v = fixedJoystick.Vertical;
h = fixedJoystick.Horizontal;
if (h >= 0.35f)
{
rb2D.velocity = new Vector2(runSpeed, rb2D.velocity.y);
spriteRenderer.flipX = false;
animator.SetBool("Run", true);
}
else if(h <= -0.35f)
{
rb2D.velocity = new Vector2(-runSpeed, rb2D.velocity.y);
spriteRenderer.flipX = true;
animator.SetBool("Run", true);
}
else
{
animator.SetBool("Run", false);
}
}
滑动跳转代码:
rb2D.velocity = -jumpVector.normalized * shotRecoilPower;
问题:当我移动时,我不能跳。因为有两个速度脚本相互冲突(我认为)
如何在没有速度的情况下向对象添加脉冲?
解决方案
1- 使用AddForce
方法
2-不要直接设置速度,而是增加或减少它。
rb2D.velocity += new Vector2(runSpeed, rb2D.velocity.y);
如果你想有一个最大速度限制然后使用Vector2.ClampMagnitude
推荐阅读
- javascript - 悬停时模糊整个背景
- ios - 无法安装 Apple Enterprise 应用程序
- r - 使用Shell从VBA内部执行R脚本不起作用
- tabulator - 如何在制表器中向嵌套树数据动态添加行?
- microsoft-cognitive - 使用 Microsoft 自定义翻译(免费层),我们可以构建自定义模型,但我们可以测试模型吗?
- java - Spring Security 不允许通过 https 访问
- sql - 如何让这个结果在列中显示
- python - Matplotlib 3d plot:在 2 个表面上获取单个颜色图
- tapestry - 在 Apache Tapestry 中从旧 URL 重定向到新 URL
- javascript - 在javascript中的数组内过滤对象内的数组