正直この程度の事は誰でも思いついてると思うけど
これについて書いてる記事を見たことがないので一応書いておこ
最初のエントリーだしね
たいへん簡易なタイムライン機能って感じのやつです
using System.Collections; using System.Collections.Generic; using UnityEngine; public class statemachine : MonoBehaviour { int state=0; int count=0; void Update() { if(state==0) { if(count==50)Debug.Log("state0の50フレーム目です"); movestate(1,100); //100f後にstate1へ } if(state==1) { if(count==20)Debug.Log("state1の20フレーム目です"); movestate(0,100); //100f後にstate0へ } count++; } void movestate(int ST,int CT=0) { if(count>=CT) { state=ST; count=0; } } }
とまあこうすればif(count==***)のフレームでだけ発火するような動作が書けるわけです。
例えばstate1のcount5で弾を撃ち、30f後にstate0に戻るとかね
Update() 内に書くと、144Hzとかのクソ速いディスプレイが繋がってる環境だと爆速で動いてしまうので
FixedUpdate()内に書くとかApplication.targetFrameRate=60;をどっかで入れるとか
そもそもcountをfloatに改造するとか工夫が必要ですが
うちのゲームのキャラクターはだいたいこれをベースにいじったやつで動いてます
変数だけで書けるから好き!
IEnumerator?めんどくさいから使わない
ほなまた