ブログ記事一覧

【Unity】Unity スクリプトで「ふわふわの物にのっかってポヨンとさせてみる」(雲にのった感じ)

2018-01-06

Unityで雲にのっかったときのようなポヨンとする表現を単純に実装

[blogcard url="https://github.com/hmcGit/FuwaMuni"]gitにもあげてます[/blogcard]
プロジェクトはgitにもあります。

こんなかんじで、ふわふわしたものにのっかったときに、ぽよん!とさせたいときに!
スクリプトでのごく簡単な実装です。

※ふわふわスクリプトは[blogcard url="http://veniegames.com/?p=21″]Unityふわふわ浮いているようにする[/blogcard]を参考にしました。

スクリプト解説

ふわふわ、ぽよんとするオブジェクト

雲などのふわふわ動いて、のっかるとぽよんとするオブジェクトにアタッチします。RigidBody2Dとコライダーも忘れずに

cloud

FixedUpdate()のFuwaFuwa()がふわふわ漂うスクリプト(これは参考URLのものです)
OnCollisionEnter2D()がコリジョンに接触したらよびだされますが、
MuniMuni()がぽよんとさせるスクリプトです。
MuniMuni関数内で

としていますが、これでプレイヤーと雲を親子にし連続で小刻みにボヨボヨするのを防いでいます。

CloudControl.cs

void FuwaFuwa() { frameCnt += 1; if (10000 <= frameCnt) { frameCnt = 0; } if (0 == frameCnt % 2) { // 上下に振動させる(ふわふわを表現) float posYSin = Mathf.Sin(2.0f * Mathf.PI * (float)(frameCnt % 200) / (200.0f – 1.0f)); iTween.MoveAdd(gameObject, new Vector3(0, amplitude * posYSin, 0), 0.0f); } } ///

/// IEnumerator MuniMuni() { Vector3 ds = transform.localPosition; //すこしyポジションを動かしてむにっとした感じにする for (int i = 0; i <= 180; i += 20) { transform.localPosition = new Vector3( ds.x, ds.y – 0.5f * (Mathf.Sin(i * Mathf.Deg2Rad)), 1); yield return new WaitForFixedUpdate();// WaitForSeconds(0.016f); } } void OnCollisionEnter2D(Collision2D coll) { //コリジョンにEnterしたらむにむにさせる StartCoroutine(MuniMuni()); coll.transform.SetParent(this.transform); } }

ふわふわにのっかるオブジェクト

プレイヤーキャラクターなどの、雲などにのっかる方にはこちらをアタッチして下さい。
player
キャラクターには、RigidBody2dとコライダーのアタッチも忘れずに。
ポイントは、キャラクタの操作でジャンプした瞬間に、雲に設定していたParentを解除しているところです。

PlayerContro.cs