【问题标题】:Unity object respawn keeps it movingUnity 对象重生使其保持移动
【发布时间】:2015-05-27 18:39:07
【问题描述】:

我的对象和它的克隆(附有对撞机)在向左或向右滑动时被池化并停用。当它们被激活时,它们会立即沿着滑动方向移动。怎么可能将他们的重生速度设置为零?(水平移动)

【问题讨论】:

  • 所以.......对象一直在移动,直到您向左滑动(停用它们),然后当您向右滑动(重新激活它们)时,它们会继续之前的移动趋势?
  • 那么,是什么控制了他们的速度?如果它是刚体,您可以在重生时将其速度设置为零。
  • @Zze 向反方向滑动滑动的对象,使其在反方向以相同的速度移动。
  • @rutter transform.translate 在更新函数中使它移动。顺便说一句,对撞机附在物体上,但我不能让它停止它的运动。没有刚性男孩。谢谢你们的回复。

标签: object unity3d


【解决方案1】:

我会为我不想移动的对象制作一个脚本,并将其附加到每个单独的对象或控制生成对象的基于管理器的对象。您可以简单地在实例化后,将它们的速度变量设置为 0 并调用协程 x 秒,然后在协程结束时将它们的速度变量改回。确保每个都有自己的速度变量,以免影响整个批次。

应该是这样的..

GameObject clone = (GameObject)Instantiate(prefab, new Vector3(0, 0, 0), Quaternion.identity);
// set speed to zero here.
StartCoroutine(WaitAndMove(2.0F));

并添加此功能

IEnumerator WaitAndMove(float waitTime) {
yield return new WaitForSeconds(waitTime);
// set speed back here 
}

【讨论】:

  • 我明白了...但是我宁愿使用对象池而不是实例化我的对象,这意味着我停用了滑动的对象,而不是销毁它们。这就是为什么我不能按照你的建议将它们的速度设置为零,因为我没有实例化刷过的对象。我只是激活它们。谢谢。
  • 抱歉回复晚了。这取决于您的池化方法。据我所理解。池化只是重用几个已经实例化的对象。通常池系统会在每次使用时停用并重新激活。好吧,如果您将我的逻辑(减去实例化部分)放在对象的唤醒方法中。它应该解决所有相同的大声笑。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2018-03-20
  • 2023-04-05
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多