簡単に書くならこんな感じでしょうか。
C#
1private Transform camera;
2private ParticleSystem particleObj; //publicにしてインスペクターからD&Dさせてもよい
3
4private Vector3 beforeCameraPosition; //1フレーム前のカメラ位置
5
6void Start () {
7 camera = Camera.main.transform; //カメラにMainCameraタグを付けていない場合は適宜調整してください。
8 particleObj = GameObject.Find ("particle1").GetComponent<ParticleSystem>(); //particle1というオブジェクトが存在しないとエラー起こすので注意
9}
10
11void Update () {
12 if (camera != null) {
13 //現在のカメラの位置
14 Vector3 nowCameraPosition = camera.potision;
15
16 //前回のカメラの位置と比較(とりあえず例としてYだけ比較)
17 if (beforeCameraPosition != null && beforeCameraPosition.y <= nowCameraPosition.y) {
18 //1フレーム前よりも現在の方がY値が大きい時はここの処理を行う
19 particleObj.transform.position = nowCameraPosition;
20 particleObj.Play();
21 }
22
23 //現在位置を保存
24 beforeCameraPosition = camera.potision;
25 }
26}
※「パーティクルオブジェクトは消滅しない」ことを前提としたコードなので、
必要に応じて適宜修正してください。
>1フレーム前のカメラの座標を取得する方法
Updateは毎フレーム呼ばれます。
前回のUpdateの最後に保存した座標(beforeCameraPosition)と現在の座標を比較することでどの方向に移動したかが分かります。
「どちらが進行方向なのか(どう動いていたら前進なのか)」はゲームにより異なると思いますので、
ご自分で調整してください。
(ちなみにVector3形式なので「beforeCameraPosition > nowCameraPosition」とかやってもエラーになります)
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2016/12/22 14:05 編集