我想在游戏中单击硬币时实例化粒子系统,但粒子系统未出现在硬币所在的相同位置。
我使用了这段代码,但我不知道在我单击的位置(鼠标位置)或硬币所在的位置指定粒子系统的位置。我将预制硬币用于硬币并标记了它们。并且当我单击硬币时也会创建pickupeffect克隆,所以我需要在几秒钟后销毁它们
8
答案 0 :(得分:1)
销毁硬币后,您可以获得hit.collider.gameObject
的位置,并在同一位置实例化系统。请记住,如果硬币继承的位置与x=0, y=0
不同,则可能需要实例化该对象并设置相同的父对象。该代码应如下所示:
if (hit.collider.tag == "coin") {
ReplaceCoinWithSys(hit.collider.gameObject, Resources.Load ("Pickupeffect"))
}
,方法应该是这样的:
private void ReplaceCoinWithSys(GameObject coin, GameObject system){
Instantiate(system,new Vector2 (coin.transform.position.x, coin.transform.position.y), Quaternion.identity);
Destroy (coin);
}
我希望这会有所帮助,在您完成游戏后打我,我想尝试一下:)
答案 1 :(得分:0)
希望它可以帮助您
private Gameobject ObjectThatYouNeedToDestroy;// gameobject initialization
void Update () {
if (Input.GetMouseButtonDown (0)) {
RaycastHit2D hit = Physics2D.Raycast (Camera.main.ScreenToWorldPoint(Input.mousePosition), Vector2.zero);
}
if (hit.collider != null)
因此,当单击的对象是硬币时,则:
if (hit.collider.tag == "coin") {
使用默认的预制旋转(hit.transform.position
)在光标(Quaternion.identity
)击中的对象位置实例化该对象。
Instantiate (Resources.Load ("Pickupeffect"), hit.transform.position, Quaternion.identity);//instantiate particle prefab in coin position with original prefab rotation
float DelayTime = 5f;// change delay with any value
如果无法在另一个函数中评估值ObjectThatYouNeedToDestroy
,则将命中对象分配给变量hit.transform.gameobject
。
ObjectThatYouNeedToDestroy= hit.transform.gameobject;// assign coin that clicked as ObjectThatYouNeedToDestroy
最后一步是在延迟时间到期后执行DelayedDestroy
函数。
Invoke ("DelayedDestroy", DelayTime);//execute function with delay
}
}
这是销毁名为ObjectThatYouNeedToDestroy
(硬币)的游戏对象的功能
void DelayedDestroy(){
Destroy (ObjectThatYouNeedToDestroy);
}