「Unity/Csharp/Particle」の版間の差分
提供: 初心者エンジニアの簡易メモ
(→ホーミングレーザーを作る) |
(→unity公式パーティクル パック) |
||
(同じ利用者による、間の14版が非表示) | |||
行7: | 行7: | ||
gameObj.GetComponent<ParticleSystem> ().Play (); | gameObj.GetComponent<ParticleSystem> ().Play (); | ||
− | == | + | ==ホーミングミサイルを作る== |
追跡弾を2つ作ってみる例 | 追跡弾を2つ作ってみる例 | ||
行53: | 行53: | ||
</pre> | </pre> | ||
参考:https://qiita.com/Shinoda_Naoki/items/c6fbfc85fe24b2fcd5a1 | 参考:https://qiita.com/Shinoda_Naoki/items/c6fbfc85fe24b2fcd5a1 | ||
+ | |||
+ | ブラーとかは?参考になる? https://baba-s.hatenablog.com/entry/2018/04/10/094300 | ||
+ | |||
+ | ==ホーミングレーザー== | ||
+ | 以下で青いレーザーが作れる | ||
+ | |||
+ | TrailRendererを使う。 | ||
+ | |||
+ | 参考:https://ukonn.net/unity-how-to-make-homing-laser | ||
+ | |||
+ | ==お金獲得イメージ== | ||
+ | coneのパーティクルを使う。 | ||
+ | 放心円上に動く画像の、動く直径が徐々に小さくなる。 | ||
+ | <pre> | ||
+ | void AnimationMoney() | ||
+ | { | ||
+ | float sec = 2.5f; | ||
+ | GameObject obj = GameObject.Find("MoneyParticleSystem"); | ||
+ | iTween.MoveTo(obj, iTween.Hash("easeType", iTween.EaseType.easeOutSine, "x", 0.7f, "y", 3.5f, "time", sec)); | ||
+ | |||
+ | Hashtable hash = new Hashtable(){ | ||
+ | {"from", 100f}, | ||
+ | {"to", 0f}, | ||
+ | {"time", sec}, | ||
+ | {"easeType",iTween.EaseType.easeOutCubic}, | ||
+ | {"onupdate", "OnUpdateValue"}, | ||
+ | {"onupdatetarget", gameObject}, | ||
+ | }; | ||
+ | iTween.ValueTo(gameObject, hash); | ||
+ | ParticleSystem.MainModule particle = obj.GetComponent<ParticleSystem>().main; | ||
+ | particle.maxParticles= 3; | ||
+ | Invoke("AnimationMoneyEnd", sec); | ||
+ | } | ||
+ | void OnUpdateValue(float value) | ||
+ | { | ||
+ | Debug.Log("value=" + value); | ||
+ | GameObject obj = GameObject.Find("MoneyParticleSystem"); | ||
+ | if (obj != null) | ||
+ | { | ||
+ | var shape = obj.GetComponent<ParticleSystem>().shape; | ||
+ | shape.angle = value / 4; | ||
+ | float scale = 0.2f + value / 100; | ||
+ | shape.scale = new Vector3(scale, scale, scale); | ||
+ | } | ||
+ | } | ||
+ | void AnimationMoneyEnd() | ||
+ | { | ||
+ | GameObject obj = GameObject.Find("MoneyParticleSystem"); | ||
+ | Destroy(obj); | ||
+ | } | ||
+ | </pre> | ||
+ | |||
+ | ==オーラとか== | ||
+ | http://ktk-kumamoto.hatenablog.com/entry/2014/09/28/080827 | ||
+ | |||
+ | ==SpriteとParticleの順序== | ||
+ | SpriteよりParticleを手前にしたいときは、 | ||
+ | Renderer/OrderInLayerで順序などを1000とかにしてみる。 | ||
+ | <pre> | ||
+ | Renderer particleSystemRenderer = obj.GetComponent<Renderer>(); | ||
+ | particleSystemRenderer.sortingOrder = 1000; | ||
+ | </pre> | ||
+ | |||
+ | 参考:http://tsubakit1.hateblo.jp/entry/2015/01/05/233000 | ||
+ | |||
+ | ==紙吹雪== | ||
+ | https://tsubakit1.hateblo.jp/entry/2015/09/04/233000 | ||
+ | |||
+ | ==unity公式パーティクル パック== | ||
+ | https://assetstore.unity.com/packages/essentials/tutorial-projects/unity-particle-pack-127325?utm_source=youtube&utm_medium=social&utm_campaign=education_global_generalpromo_2018-09-04_particle-pack&utm_content=download_video |
2021年11月5日 (金) 20:39時点における最新版
目次
パーティクル再生
GameObject gameObj = GameObject.Find ("ParticleSystem1"); gameObj.GetComponent<ParticleSystem> ().Stop ();
パーティクル停止
GameObject gameObj = GameObject.Find("ParticleSystem1"); gameObj.GetComponent<ParticleSystem> ().Play ();
ホーミングミサイルを作る
追跡弾を2つ作ってみる例
- UI/Particle Systemを新規で作る。
- "Particle System"というのと"Particle System2"というのを作る。
public class HomingScene : MonoBehaviour { ParticleSystem ps; ParticleSystem ps2; ParticleSystem.Particle[] m_Particles; public float threshold = 1f; public float intensity = 1f; public Transform target; public float _speed = 0.01f; // 1秒間に進む距離 public float _rotSpeed = 180.0f; // 1秒間に回転する角度 void Start() { ps = GameObject.Find("Particle System").GetComponent<ParticleSystem>(); ps2 = GameObject.Find("Particle System2").GetComponent<ParticleSystem>(); target = GameObject.Find("CircleSprite").transform; } void Update() { ViewParticle(ps); ViewParticle(ps2); } void ViewParticle(ParticleSystem ps) { m_Particles = new ParticleSystem.Particle[ps.main.maxParticles]; int numParticlesAlive = ps.GetParticles(m_Particles); for (int i = 0; i < numParticlesAlive; i++) { var forward = ps.transform.TransformPoint(m_Particles[i].velocity); var position = ps.transform.TransformPoint(m_Particles[i].position); var direction = (target.TransformPoint(target.position) - position).normalized; var period = 1 - (m_Particles[i].remainingLifetime / m_Particles[i].startLifetime); m_Particles[i].velocity = ps.transform.InverseTransformPoint(forward + direction * period); } ps.SetParticles(m_Particles, numParticlesAlive); } }
参考:https://qiita.com/Shinoda_Naoki/items/c6fbfc85fe24b2fcd5a1
ブラーとかは?参考になる? https://baba-s.hatenablog.com/entry/2018/04/10/094300
ホーミングレーザー
以下で青いレーザーが作れる
TrailRendererを使う。
参考:https://ukonn.net/unity-how-to-make-homing-laser
お金獲得イメージ
coneのパーティクルを使う。 放心円上に動く画像の、動く直径が徐々に小さくなる。
void AnimationMoney() { float sec = 2.5f; GameObject obj = GameObject.Find("MoneyParticleSystem"); iTween.MoveTo(obj, iTween.Hash("easeType", iTween.EaseType.easeOutSine, "x", 0.7f, "y", 3.5f, "time", sec)); Hashtable hash = new Hashtable(){ {"from", 100f}, {"to", 0f}, {"time", sec}, {"easeType",iTween.EaseType.easeOutCubic}, {"onupdate", "OnUpdateValue"}, {"onupdatetarget", gameObject}, }; iTween.ValueTo(gameObject, hash); ParticleSystem.MainModule particle = obj.GetComponent<ParticleSystem>().main; particle.maxParticles= 3; Invoke("AnimationMoneyEnd", sec); } void OnUpdateValue(float value) { Debug.Log("value=" + value); GameObject obj = GameObject.Find("MoneyParticleSystem"); if (obj != null) { var shape = obj.GetComponent<ParticleSystem>().shape; shape.angle = value / 4; float scale = 0.2f + value / 100; shape.scale = new Vector3(scale, scale, scale); } } void AnimationMoneyEnd() { GameObject obj = GameObject.Find("MoneyParticleSystem"); Destroy(obj); }
オーラとか
http://ktk-kumamoto.hatenablog.com/entry/2014/09/28/080827
SpriteとParticleの順序
SpriteよりParticleを手前にしたいときは、 Renderer/OrderInLayerで順序などを1000とかにしてみる。
Renderer particleSystemRenderer = obj.GetComponent<Renderer>(); particleSystemRenderer.sortingOrder = 1000;
参考:http://tsubakit1.hateblo.jp/entry/2015/01/05/233000
紙吹雪
https://tsubakit1.hateblo.jp/entry/2015/09/04/233000