2 oiu1010110 oiu1010110 于 2016.03.12 21:11 提问

在unity中用c#脚本控制物体的随机落下

我想用Unity3d 做了一个场景,20s倒计时,当时间一到,天空开始随机不停的降落物体(这个物体可以是一个Cube),越到后面,物体下落的速度越快。时间不到,物体就不降落。这个用脚本要如何写呢?

2个回答

striveant
striveant   2016.03.12 22:06

你可以这样试试:
先去做一个要掉落的物体Cube ,然后将它存成一个Prefab
在生成的Script 里面去检测时间(涉及Time),一旦20s到了之后,去执行一个for loop(i~n)loop里面用 Instantiate 生成随机位置
(涉及Random 与Vector3)的Prefab,然后抓到生成的物件(这个点要你去研究一下)对其用AddForce 去施加一个向下的力(也是可以把Mass 调大)并且每loop一次 增加的力就变大。

看你的描述不清楚你的物品是否需要一开始就在上面然后掉光就没了,如果是的话就不需要生成了,可以一开始物体都是Kinematic,之后要AddForce 的时候 将IsKinematic 改为false 就好。

striveant
striveant 回复oiu_半个夏天: http://docs.unity3d.com/ScriptReference/Object.Instantiate.html如果要抓取克隆的实例可以 GameObject TempInstance = (GameObject)Instantiate(prefab, new Vector3(i * 2.0F, 0, 0), Quaternion.identity); 配合 GetComponent 就可以了。至于处理时间什么你自己去找Source Code。
一年多之前 回复
oiu1010110
oiu1010110 可以有具体的代码示例下吗? 现在还是处于完全不懂这个的状况,但是要交任务了,实在是没办法了
接近 2 年之前 回复
striveant
striveant 回复oiu_半个夏天:【 先说上面回复中的一个错误】:我忘记重的物体与轻的物体没有空气阻力下落速度是一样的,所以加mass 应该对加速没有用。 大概: 你把不同种类的物品做成Prefabs,然后利用Random 去生成随机位置 存在Vector3 中,然后Update中(我不确定这里是否一定需要FixedUpdate) 用一个for loop 在里面用Instantiate 生成克隆的实例,至于设置克隆的实例,你直接型别转换就好。 然后就可以对其增加力了(AddForce)。 或许还有bug,你再自己trace一下。
接近 2 年之前 回复
oiu1010110
oiu1010110 恩,谢谢你了。我想要的效果是一直有不同种类的东西从上面随机的掉下,越到后面掉落的速度越快。因为之前没有接触过这样的,所以可以麻烦你再说详细一些吗?有点急用这个 谢谢
接近 2 年之前 回复
oiu1010110
oiu1010110 恩,谢谢你了。我想要的效果是一直有不同种类的东西从上面随机的掉下,越到后面掉落的速度越快。因为之前没有接触过这样的,所以可以麻烦你再说详细一些吗?有点急用这个 谢谢
接近 2 年之前 回复
y995183264
y995183264   2017.03.29 09:53

物体添加刚体组件,默认设置使用重力,定义一个计时器,在update里面设置值,当达到20s时,设置物体掉落,可以将物体做为prefab来使用

Csdn user default icon
上传中...
上传图片
插入图片
准确详细的回答,更有利于被提问者采纳,从而获得C币。复制、灌水、广告等回答会被删除,是时候展现真正的技术了!