unity3d - 实例化移动的原始对象
问题描述
我确信这是一个简单的修复,但我在 Unity 很新,我无法弄清楚。我有一个球,当它掉落并与屏幕底部碰撞时,它会在屏幕上随机创建另一个球。这个过程将一直持续到指定的最大数量的球出现在屏幕上。它基本上可以工作,但是当第一个球击中底部并生成一个新球时,原始球似乎被重新创建或在屏幕上以随机位置向上移动。我希望球不断弹跳并创造新球。
这是相关的代码。
void OnTriggerEnter2D (Collider2D collision)
{
if (collision.gameObject.name == "tile" && balls < maxBalls )
{
balls = balls + 1;
randomX = Random.Range(-3, 4);
randomY = Random.Range(-3, 4);
transform.position = new Vector3(randomX, randomY, transform.position.z);
Instantiate(ball, transform.position, transform.rotation);
NumberofBalls();
}
}
解决方案
它移动原始球的原因是因为这条线:
transform.position = new Vector3(randomX, randomY, transform.position.z);
这将设置当前对象的位置。
如果您只想在随机位置生成新对象,您应该这样做:
void OnTriggerEnter2D (Collider2D collision)
{
if (collision.gameObject.name == "tile" && balls < maxBalls )
{
balls = balls + 1;
randomX = Random.Range(-3, 4);
randomY = Random.Range(-3, 4);
Vector3 newPosition = new Vector3(randomX, randomY, transform.position.z);
Instantiate(ball, newPosition, transform.rotation);
NumberofBalls();
}
}
推荐阅读
- python - 如何在不查看文件内容的情况下编写代码来确定 CSV 文件中的 EOL 字符是“\r”还是“\n”?
- visual-studio - 警告消息 - 缓慢构建
- java - AWT GUI - 同一个应用程序在不同的 PC 屏幕尺寸上显示大量不同的帧尺寸
- c# - 可以列表吗
有名字还是有办法拥有“灵活”的财产? - ruby-on-rails - Rails 5:使用带有参数的 form_with 预填充搜索表单输入,而无需为每个字段手动执行
- javascript - Vue。当 Vuex 存储中的值被修改时,将焦点设置在组件的输入上
- java - 选择选项卡时创建每个类的实例 (JTabbedPane)
- ruby-on-rails - Ruby on Rails:从图像请求中剥离文件扩展名并重定向到 404
- html - 未捕获的错误:无法使用带有 p5 和 html 的 MathJax 从给定数据进行回调
- react-native - react-native-elements,帮助在 FormInput 中居中输入文本