最新のUnityでparticleを使ってます。
やりたいことは放物線を描くように放出されたparticleで最終的な到達地点を
適当なオブジェクトにしたい(動くオブジェクト)
LookAt使えばオブジェクトの方向は向いてくれますがparticleがそのオブジェクトに当たらないこともあります。
かならずその場所めがけて飛ばしたいです。
もしかして、particleではなく普通のオブジェクトを物理演算で放物線描くように飛ばした方が楽ですかね・・
気になる質問をクリップする
クリップした質問は、後からいつでもMYページで確認できます。
またクリップした質問に回答があった際、通知やメールを受け取ることができます。
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
回答2件
0
ベストアンサー
もう解決したかもしれませんが、先のリンク中で出ているコードだとLeapの最後をパーティクルの生存残時間比にすれば目的ポイントに飛ぶかと思います。以下の例だと全パーティクルが目標めがけて突っ込んでいきます。
c#
1using UnityEngine; 2using System.Collections; 3 4[RequireComponent(typeof(ParticleSystem))] 5public class ParticleAttraction : MonoBehaviour 6{ 7 public Transform Target; 8 9 private ParticleSystem system; 10 11 private static ParticleSystem.Particle[] particles = new ParticleSystem.Particle[1000]; 12 13 void Start() { 14 15 } 16 void Update() 17 { 18 if (system == null) 19 { 20 system = GetComponent<ParticleSystem>(); 21 } 22 23 var count = system.GetParticles(particles); 24 25 for (int i = 0; i < count; i++) 26 { 27 var particle = particles[i]; 28 29 float distance = Vector3.Distance(particle.position, Target.position); 30 31 Vector3 v1 = system.transform.TransformPoint(particle.position); 32 Vector3 v2 = Target.transform.position; 33 34 //パーティクル生成残り時間に応じて距離をつめる 35 float lifeDelta = 1.0f - (particle.lifetime / particle.startLifetime); 36 37 Vector3 dist = system.transform.InverseTransformPoint(Vector3.Lerp(v1, v2, lifeDelta)); 38 particle.position = dist; 39 particles[i] = particle; 40 41 } 42 43 system.SetParticles(particles, count); 44 } 45}
投稿2016/01/12 12:03
総合スコア103
0
Forumでこんなやり取りを見つけましたので貼っておきます。
試したことはありませんがparticleの位置を変更出来るようです。
http://forum.unity3d.com/threads/getting-shuriken-particles-to-move-to-target.321065/
投稿2016/01/11 22:48
総合スコア103
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
あなたの回答
tips
太字
斜体
打ち消し線
見出し
引用テキストの挿入
コードの挿入
リンクの挿入
リストの挿入
番号リストの挿入
表の挿入
水平線の挿入
プレビュー
質問の解決につながる回答をしましょう。 サンプルコードなど、より具体的な説明があると質問者の理解の助けになります。 また、読む側のことを考えた、分かりやすい文章を心がけましょう。
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2016/01/12 12:24