[Unity] エフェクト(パーティクル)を画面に出す

こんなのをやります


要は、
・車で、ホイールスピンが発生したとき、煙のエフェクトを発生させるようにしたい。


1.
Unity上でエフェクトを作成しResourceフォルダに突っ込む
エフェクトっぽいものはGameObject->ParticleSystemで作成できるので、Inspectorで適当に設定、
hierarchyからProjectビューにドラッグして.prefabファイルを作成

Resource/Effects/WheelSmokeに入れたものとして進めます。

2.
このプログラムをWheelColiderを持つオブジェクトに貼り付ける。
4つ全てのWheelColiderが1つのオブジェクトにまとまっている場合は、
GetComponentを削除、publicフィールドにしてinspectorで設定する。

using UnityEngine;
using System.Collections;

public class WheelEffect : MonoBehaviour {

private const float WheelSlipBorder = 0.4f;

private WheelCollider wheel;
static private GameObject wheelSmokeEffect;

private int smokeTick = 0;

static WheelEffect() {
wheelSmokeEffect = Resources.Load("Effects/WheelSmoke") as GameObject;
}

void Awake() {
wheel = GetComponent<WheelCollider>();
}

// Use this for initialization
void Start () {

}

// Update is called once per frame
void Update () {
WheelHit whit;
wheel.GetGroundHit(out whit);
if (whit.forwardSlip * whit.forwardSlip + whit.sidewaysSlip * whit.sidewaysSlip > WheelSlipBorder * WheelSlipBorder) {
if (smokeTick <= 0) {
GameObject s = Instantiate(wheelSmokeEffect);
s.transform.position = wheel.transform.position;
Destroy(s,1.5f);
smokeTick = 25;
}
}
if (smokeTick>0) smokeTick--;
}
}

wheelSmokeEffect = Resources.Load("Effects/WheelSmoke") as GameObject;
GameObjectとしてリソースをファイルから読み込む

GetComponent<WheelCollider>();
WheelColliderを探して取得する

wheel.GetGroundHit(out whit);
wheel( WheelCollider )の路面の接触状態をwhitに書き出す

int smokeTick
0以下ならパーティクル生成
0より大きいならパーティクル生成不可。フレームごとにsmoketickを1減らす。
エフェクト出過ぎ問題を解決するため。

smokeTick = 25;
25フレームはパーティクル生成不可。

GameObject s = Instantiate(wheelSmokeEffect);
リソースからオブジェクトを生成する

Destroy(s,1.5f);
sゲームオブジェクトは1.5秒後に死ぬ。意外と便利なメソッド。

s.transform.position = wheel.transform.position;
sの座標をwheelの座標に合わせる。
書き方が参照渡しのように見えるが、参照を渡しているわけではなさそう。
スポンサーサイト

テーマ : プログラミング
ジャンル : コンピュータ

tag : Unity

コメントの投稿

非公開コメント

プロフィール

舞葉(ぶよう)

Author:舞葉(ぶよう)
github.io
はてなブログ(競プロ)

古い記事のソースコードは色分けしていないので、高機能テキストエディタに貼り付けたほうが見やすいかも。

検索フォーム
このブログについて
自分がつまづいた話題、なんとなく書きたいと思ったこと、ググったけど殆ど資料なかったぞオイ な話等をアップする予定。通りすがりでも、参考になっていただければと。プログラムの例外入力、メモリリークは責任負いません。投稿された記事は修正・削除する場合があります。
カテゴリ
タグ

HSP3アルゴリズムとデータ構造c++RubyJavaUnity画像解析C機械学習C#LinuxcodeIQKinectMinecraftTonyuSystemraspberrypiPythonHTML5音声制御Simulinkruby俺ルール通信制御Javascriptシミュレーション

counter-shinobi
固定記事
最新記事
最新コメント
月別アーカイブ
ブロとも申請フォーム

この人とブロともになる

アクセスランキング
[ジャンルランキング]
コンピュータ
1467位
アクセスランキングを見る>>

[サブジャンルランキング]
プログラミング
265位
アクセスランキングを見る>>