FC2ブログ
02 «1.2.3.4.5.6.7.8.9.10.11.12.13.14.15.16.17.18.19.20.21.22.23.24.25.26.27.28.29.30.31.» 04

ハルシオンシステムの気ままBlog

株式会社ハルシオンシステムのメンバーが送る、UnityやらJavaやらの技術的話題から、自社開発のアプリの宣伝とかとかのブログです。ほんと気ままにいきたいと思います。更新日は毎週 月 木でっす!

 

【ハルシオンブログ】DoTweenを使ってランダムぶれて飛んでいく弾を作ってみよう! 

はーい 坂内でーす!

みなさんお元気お過ごしですか?

DoTweenでこんな感じで動かす方法の紹介。


まずは、ボタンを押すと弾が出るようにします。

[BulletManager.cs]
using UnityEngine;

public class BulletManager : MonoBehaviour {

public GameObject bulletPref;

public void OnClickShoot() {
Instantiate(bulletPref);
}

}


そして、弾のオブジェクトに次のスクリプトを付けます。

[Bullet.vs]
using UnityEngine;
using DG.Tweening;

public class Bullet : MonoBehaviour {

void Start() {
transform.DOMoveY(5.2f,1f);
}

private void Update() {
if(transform.localPosition.y >= 5.2f) {
Destroy(gameObject);
}
}
}


これで、ボタンを押すと弾が真っすぐ上に飛ぶようになります。

ここまでが基本。

次に、弾が横にぶれるようにします。

ぶれ幅は次のコードの BLUE_WIDTHになります。

[Bullet.cs]
using UnityEngine;
using DG.Tweening;

public class Bullet : MonoBehaviour {

float[] BLUR_WIDTH = {-1f, 1f};

void Start() {
Vector3[] path = {
new Vector3(transform.localPosition.x + Random.Range(BLUR_WIDTH[0],BLUR_WIDTH[1]),
Random.Range(BLUR_WIDTH[0],BLUR_WIDTH[1],0f),
new Vector3(0,5.2f,0f)
};
transform.DOLocalPath(path, 1f, PathType.CatmullRom).SetEase(Ease.Linear);
}

private void Update() {
if(transform.localPosition.y >= 5.2f) {
Destroy(gameObject);
}
}
}


DoTweenのDOLocalPathを使ってパスにするのですが、Y座標を-1~+1のランダム、X座標を-1~+1のランダムにしているのでこういう動きになります。

Sceneの方を見るとなんとなくわかるかな…



というわけで、パスの通り道をランダムで作るとこんな感じの動きの物が作れます。

では、あでゅ~ノシ
スポンサーサイト



Category: 開発日記(Unity)

tb 0 : cm 0