プレイヤーと衝突時にエフェクト(パーティクル)を発生させる方法を紹介します。
プレイヤーとしては以下を使います。
完成動作
作り方(動画)
作り方(ブログ)
シーンを作成
1.以下のようにGameObjectを配置する。
※Cubeで床、Cylinder(赤)にunitychanが当たったらエフェクトが発生するように作る。
![](https://programming.sincoston.com/wp-content/uploads/2021/08/image-4.png)
エフェクト(パーティクルシステム)を作成
1.以下のようにして、”Particle System”を作成
![](https://programming.sincoston.com/wp-content/uploads/2021/08/image-3.png)
2.生成した”Particle System”のInspectorタブの”Particle System”コンポーネントを適宜設定する。
※今回は以下を変更
・ループはさせないので”Looping”のチェックを外す。
・”Start Color”を見やすいように赤にした。
・生成と同時に実行はされたくないので、”Play On Awake”のチェックを外す。(Play()を使って実行する)
![](https://programming.sincoston.com/wp-content/uploads/2021/08/image-5.png)
エフェクト(パーティクルシステム)をプレハブ化
1.Hierarchyタブの”Particle System”オブジェクトをProjectタブにドラックアンドドロップしてプレハブ化する。
![](https://programming.sincoston.com/wp-content/uploads/2021/08/image-6.png)
2.Hierarchyタブの”Particle System”を削除する。
![](https://programming.sincoston.com/wp-content/uploads/2021/08/image-7.png)
![](https://programming.sincoston.com/wp-content/uploads/2021/08/image-8.png)
プレイヤーが衝突したらエフェクト(パーティクルシステム)が発生するスクリプトを作成
1.StartParticle.csという名前のスクリプトを作成して、以下のコードを記載する。
using UnityEngine;
public class StartParticle : MonoBehaviour
{
[SerializeField]
[Tooltip("発生させるエフェクト(パーティクル)")]
private ParticleSystem particle;
/// <summary>
/// 衝突した時
/// </summary>
/// <param name="collision"></param>
private void OnCollisionEnter(Collision collision)
{
// 当たった相手が"Player"タグを持っていたら
if (collision.gameObject.tag == "Player")
{
// パーティクルシステムのインスタンスを生成する。
ParticleSystem newParticle = Instantiate(particle);
// パーティクルの発生場所をこのスクリプトをアタッチしているGameObjectの場所にする。
newParticle.transform.position = this.transform.position;
// パーティクルを発生させる。
newParticle.Play();
// インスタンス化したパーティクルシステムのGameObjectを5秒後に削除する。(任意)
// ※第一引数をnewParticleだけにするとコンポーネントしか削除されない。
Destroy(newParticle.gameObject, 5.0f);
}
}
}
衝突時にエフェクトを発生させたいGameObjectにスクリプトをアタッチ
1. StartParticle.csを衝突時にエフェクトを発生させたいブロック(Cylinderオブジェクト)にアタッチする。
![](https://programming.sincoston.com/wp-content/uploads/2021/08/image-9.png)
![](https://programming.sincoston.com/wp-content/uploads/2021/08/image-10.png)
2.”Cylinder”オブジェクトの”Start Particle”コンポーネントのParticleプロパティに発生させたいエフェクト(パーティクル)(今回はプレハブ化した”Particle System”)を入れる。
![](https://programming.sincoston.com/wp-content/uploads/2021/08/image-11.png)
![](https://programming.sincoston.com/wp-content/uploads/2021/08/image-12.png)
プレイヤーオブジェクトのTagに”Player”を設定
1.プレイヤーオブジェクト(今回はunitychan)のTagに”Player”を設定
![](https://programming.sincoston.com/wp-content/uploads/2020/10/image-64.png)
完成
これでプレイヤーがオブジェクトに衝突したらエフェクトが発生する。
コメント