通过按下按钮过快来缩放精灵

时间:2016-10-11 21:14:37

标签: c# unity3d scale

当我按下左箭头时,我想缩小精灵,当我按下右箭头时,我想缩放精灵。我制作了这个代码并且它可以正常工作,但速度非常快。如果我按下按钮1秒钟,它可以扩展到100万次。我究竟做错了什么? posts就像0.0001,但它仍然很快疯狂。

scalingSpeed

2 个答案:

答案 0 :(得分:1)

这里的问题是你的缩放代码不会线性地改变精灵的localScale - 它实际上是指数级的!请考虑以下事项:

localScale += new Vector3 (localScale.x - scalingSpeed, localScale.y - scalingSpeed, 0);

转换为:

localScale = localScale + new Vector3 (localScale.x - scalingSpeed, localScale.y - scalingSpeed, 0);

这意味着每一帧,您都没有向scalingSpeed添加向量等效值localScale - 您在{{之间添加了差异 1}}和localScalescalingSpeed,这是更大,更大(每帧几乎加倍localScale。)

同时使用localScale和更改+=的每个组件是多余的。我的建议?不要从localScale的每个组成部分中减去scalingSpeed - 而是将其与localScale相乘,然后相加/减去:

Vector3.one

希望这有帮助!如果您有任何问题,请告诉我。

答案 1 :(得分:0)

看起来它会在每个GetKey事件上触发。正如文档所说"Think auto fire",每次按键都不止一次。每次按键都需要将其限制为一次。

查看Input.GetKeyDown