所以我有这个代码: using System.Collections; using System.Collections.Generic; using UnityEngine; public class CreateTrail : MonoBehaviour { Vector3 lastLocation; int traveled; public GameObject obj; Quaternion lastQuaternion; bool on; // Use this for initialization void Start () { lastLocation = transform.position; lastQuaternion = transform.rotation; } // Update is called once per frame void Update () { if (on) { if (Vector3.Distance(lastLocation, transform.position) > .1) { Instantiate(obj, lastLocation, lastQuaternion); lastLocation = transform.position; lastQuaternion = transform.rotation; } } if (Input.GetKeyDown(KeyCode.Space)) { if (on) { on = false; } else { lastLocation = transform.position; lastQuaternion = transform.rotation; on = true; } } } }它在它所连接的对象后面创建一串对象,但通常将带有脚本的对象和在彼此内部创建的对象一起创建。有没有办法在对象不在彼此内部时延迟或排队对象实例化,而不会中断脚本的其余部分?谢谢!
1 回答
![?](http://img1.sycdn.imooc.com/533e4d660001312002000200-100-100.jpg)
慕妹3146593
TA贡献1820条经验 获得超9个赞
您可以尝试Coroutine
,Invoke
或InvokeRepeating
创建延迟。(尽量避免使用Timer
和Thread
。)
然后添加一个碰撞器作为触发器作为边界框,并实现其OnTriggerExit
或OnTriggerExit2D
方法,以便找出另一个碰撞器何时移出边界框。
但是,可能还有另一个问题:
Vector3.Distance
返回 a float
,与 a double
( .1
)相比,其中一个应该转换为另一个的类型。
它将float
被隐式转换为double
并将其准确性改变。
您可以通过比较两个float
s来避免这种情况
if (Vector3.Distance(lastLocation, transform.position) > .1f)
您可以在此处找到有关隐式转换的更多信息
- 1 回答
- 0 关注
- 215 浏览
添加回答
举报
0/150
提交
取消