快速点击时如何使游戏对象速度不断增加
Posted
技术标签:
【中文标题】快速点击时如何使游戏对象速度不断增加【英文标题】:How to make a gameobject speed increase continuously when tapping quickly 【发布时间】:2020-11-15 19:37:28 【问题描述】:因此,如果我开始连续敲击然后停止并在我开始缓慢敲击时恢复正常,我正在尝试实现增加游戏对象速度的壮举。我在下面附上一个视频,它有立方体,我有一个球体,我想得到这种效果。我对团结有点陌生。感谢您提供的任何帮助。
VIDEO
【问题讨论】:
嗨!你的球体使用刚体吗? 是的,我正在使用 rb 【参考方案1】:您可以检查触摸,然后增加力度。 以下脚本将在每次触摸时为框增加速度
public Rigidbody2D myRb;
float speed = 5f;
void Update()
if (Input.touchCount > 0)
for(int i = 0; i < Input.touchCount ; i++)
myRb.AddForce(Vector2.up * speed);
不要忘记将对象的刚体分配给脚本,也可以根据需要调整速度。
【讨论】:
谢谢。我肯定会检查一下,顺便说一句,我使用的是 3d,所以我只需要更改 Rigidbody 和 Vector2,对吗? 不客气,是的,您将 Rigidbody2D 更改为 Rigidbody 并将 Vector2.up 更改为 Vector3.up 或手动 Vector3(0,1,0) 并根据需要进行自定义【参考方案2】:使用 Rigidbody2D 组件并向其添加力
【讨论】:
没有 Physics2D 组件。有一个Physics2D class,但它不是一个组件,它不用于向对象添加力。你的意思是Rigidbody 2D? 是的,我的错,我的意思是 Rigidbody2D。【参考方案3】:正如其他人所说,您需要检查轻拍并为每个轻拍添加力/速度。
如果物体在上升(如视频中所示),则无需编写代码来减慢它的速度 - 重力会为您做到这一点。只需确保在 RigidBody(2D) 组件上启用“使用重力”即可。
Omar Ghannou put up the code for it,所以我不会复制粘贴,但我想添加一些注释:
如果您想完全匹配您展示的视频,您可能需要向AddForce()
函数添加第二个参数:ForceMode。在你的情况下,那将是ForceMode.Impulse
。它就像听起来的那样:添加快速“爆发”的力量。尝试找到你最喜欢的东西。
如果您只想让对象向上移动,您可能需要为 RigidBody 添加约束以防止它在其他轴上移动。这可以帮助您避免轻微和/或意外移动,但请注意,您可能无法发现可能导致它的错误。
如果您想让物体下落得更快,您可以在项目设置中修改全局重力。当然,这会影响 所有 对象。如果您只是想让物体上升得更慢,只需减少添加的力即可。
如果您将 RigidBody(2D) 设置为 Dynamic 以外的任何内容,您可能应该将其改回 - 它会占用大量编程时间,这会使想要更好控制的开发人员感到沮丧(我讨厌它)但是非常适合初学者/快速原型设计。
如果您仍想使用 Kinematic,您可以通过简单地添加对象的速度来替换AddForce()
:rb.velocity += someVelocity * Vector3.up
,其中 rb
是对对象 RigidBody 的引用。如果您在 2D 中工作,请务必使用Vector2.up
,并确保它确实指向up。
祝你好运!
【讨论】:
非常感谢,您花时间写下所有内容只是为了帮助我,这真的意味着很多。顺便说一句,我应该澄清我在 3d 环境中,所有对象都是 3d。但我认为它仍然没有太大变化,因为视角仍然是带有 3d 对象的 2d。但肯定非常感谢,我一定会尝试调整并尝试所有这些明天并在此处更新。【参考方案4】:非常感谢大家的帮助,你们太棒了。我真的很感谢你们花时间帮助我。这真的意味着很多我很开心。我会尝试所有这些方法,并会在这里更新每个人。
【讨论】:
不客气!但是,如果您想继续在 *** 上发帖而不是一直关闭您的问题,那么您应该认真阅读基本规则。一方面,您永远不应该将答案用作评论,并且通常也应避免将 cmets 用作直接消息。以上是关于快速点击时如何使游戏对象速度不断增加的主要内容,如果未能解决你的问题,请参考以下文章