Udon# アップデート関数とデルタタイム
この記事は私がUdon#とC#を覚えるために参考にした動画のまとめ的な記事です
記事作成25/04/15
参考動画
ゆっくりと丁寧に教えてくれる良い動画です
ぜひ見て行ってください
Update関数とdeltaTime
update関数とは
プログラムの処理が1フレーム毎に走る関数です
1フレームとは1回処理が走る単位です
主にFPS60とは1秒間に60回処理が走り、時間にすると1/60秒で
FPS120の場合は1秒間に120回処理が走り、時間にすると1/120秒です
注意事項
1フレームに1回処理するので負荷の大きい処理であるので注意
基本の文
注意!
start関数の中に書かない事
public void Update()
{
ここに処理したいプログラムを書く
}
例文
classの下にこれを書く(変数を他の場所(行)で利用するため
private float speed = 100f;
ここから本文
public void Update()
{
if (speed > 0)
{
speed -=0.5f ;
}
this.gameObject.transform.Rotate(Vector3.up,speed);
}
public override void Interact()
{
speed = 100f;
}
class下のプロパティで変数speedを宣言し100を代入
update関数で if文を実行 speed > 0 の真偽値を確認
speed > 0 の時 speedの変数の中の数値から0.5を引く
このC#があるオブジェクトを回転させる、回転速度はspeedの値
speed < 0 の時、何も処理はしない
※しかしupdate関数の ifの判定は実行し続けている
インタラクト(VRC内でアクション)が実行されたとき
Speedの値を100にする
Speedが100になるとupdate関数の if分の speed > 0 が真となり、オブジェクトが回転される処理が再び始まる
update関数の問題点
1フレーム毎に処理するのがupdate関数です
そこでサバイバルゲームを作ったとします
1秒ごとに60点入るゲームで生きている時間が無いほど高得点になるゲームをupdate関数で作ったとします
Aさんは60フレームの処理をしているため1秒間で60点入り、正常な処理です
Bさんは120フレームで処理しているので1秒間で120点入ってしまいます
これではゲームの根幹である平等性が無くなってしまいました
これを修正するのがdeltaTimeです
deltaTime
例文
処理する数値 *time.deltaTime
処理する数値は1フレーム毎に1m動く床などの1mの数値部分です
deltaTimeはフレーム処理の速度の上下に合わして調整してくれる数値となります
秒間60フレームなら1/60の数値になり
秒間10フレームなら1/10となって同じ結果に調整してくれます
基本的にdeltaTimeは使うべき機能です
次回
ディスカッション
コメント一覧
まだ、コメントがありません