poritank
@poritank

Are you sure you want to delete the question?

Leaving a resolved question undeleted may help others!

unity パーティクルとオブジェクトの衝突判定と消滅

質問です。

unityでARのゲームを作っているのですが、攻撃用にパーティクルで雷のエフェクトを作りそれに当たった敵(オブジェクト)だけを破壊したいのですが、どうも敵に当たると雷のエフェクトも一瞬で消えてしまい、雷を打ったという感じになりません。 

以下がパーティクルにアタッチしてるスクリプトです。 

// Start is called before the first frame update
void Start()
{
    
}

// Update is called once per frame
void Update()
{
    
}

private void OnParticleCollision(GameObject other)
{
    
    Destroy(other.gameObject);
}

何か間違ってるでしょうか、分かる方がいたら回答お願いします。

0

1Answer

質問の意図が以下の2つのどちらかわからなかったのでそれぞれ回答します。もし意図と異なるようでしたらすみません。

1.敵のオブジェクトだけ削除したいが雷のパーティクルも削除されてしまうため、雷のパーティクルは削除されないようにしたい
2.雷を打ったエフェクトをより強調したい

【1.敵のオブジェクトだけ削除したいが雷のパーティクルも削除されてしまうため、雷のパーティクルは削除されないようにしたい】

OnParticleCollisionメソッドでDestroyしているのは衝突先のオブジェクト(敵)なので、パーティクル(雷)自身が削除されることはないと思います。
スクリプトに問題があるわけではなさそうなのでInspectorやHierarchyの設定を見直してみてはいかがでしょうか?

例えば以下の理由が考えられます
・パーティクルのStart Lifetimeに短い時間が設定されている
・パーティクルが削除されたオブジェクトの子供になっていて一緒に削除されてしまっている(この場合、オブジェクトが削除された後にHierarchyビューを見るとパーティクルオブジェクトがなくなっているはずです)

【2.雷を打ったエフェクトをより強調したい】
画面を見ていないので適切なアドバイスは難しいですが、以下の方法を試してみてはいかがでしょうか?
・衝突時に雷や敵の色を変える、点滅させる
・敵に雷に打たれたアニメーションを用意しDestroy前に再生する
・Destroy(other.gameObject, 0.5f);のように敵を削除するまでに遅延時間を設ける
・衝突範囲を調整してより雷が敵により食い込んだタイミングでOnParticleCollisionが呼ばれるようにする

0Like

Comments

  1. @poritank

    Questioner

    回答ありがとうございます。
    アドバイス通り、設定の方を色々と試してみます。
    あと説明が拙くわかりづらかったようですいません。ちなみに自分が意図していたのは1の方です。

Your answer might help someone💌