キャラクターを振動させるプログラミング(Unity)
今回は、表紙(?)の雷に打たれたキャラを振動させてみます。
お遊びのプログラミングですが、よかったら読んでください。
画像の読み込み
まず、画像をダウンロードします。Assets => Import New Assetsを選択し、ダウンロードしたい画像を選択します。
次に、InspectorのTexture TypeをSprite(2D and UI)に変更します。
これで、画像の読み込みはOKです。
画像の配置
画像の読み込みができたら、次は画像の配置です。
まず、Imageを画像を表示したい場所に配置します。
その後、配置したImageの中のSource Image で画像を選択します。
Scriptで振動させよう!
まずScriptの準備としてGameObjectにScriptをドロップします。Script名はVibrationにしました。
準備ができたら以下のコードを書きます。
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
using UnityEngine.UI;
public class Vibration : MonoBehaviour
{
// 振動させたいImageです
public Image rakurai;
// 振動の大きさ
public int velocity;
// Start is called before the first frame update
void Start()
{
}
// Update is called once per frame
void Update()
{
vibrate();
}
void vibrate()
{
//-velocity ~ velocity の乱数
int value1 = Random.Range(velocity * -1, velocity +1);
int value2 = Random.Range(velocity * -1, velocity +1);
// value1, value2 の分だけ移動させる
Vector3 m_pos = rakurai.GetComponent<RectTransform>().localPosition;
m_pos.x += value1;
m_pos.y += value2;
rakurai.GetComponent<RectTransform>().localPosition = m_pos;
}
}
最後に、GameObjectにImageをドロップすることを忘れないようにしてください。
Scriptの説明
vibrate関数に振動させる動きをまとめました。
value1、value2はvibrate関数が実行されるたびに変更されます。そしてvalue1、value2は平均すると0のため、時間がたっても理論上移動せず、振動します。
完成したもの
完成したら以下の動画のようになります。Speedは 5 にしました。