ふらっと C#,C♯,C#(初心者用) Part122 [無断転載禁止]©5ch.io
■ このスレッドは過去ログ倉庫に格納されています
0472デフォルトの名無しさん
2016/07/19(火) 22:28:47.41ID:5Ru68Qwwちょっとした事なら継承の代わりに使える
言語はLuaだが、C#でも考え方は同じだと思うから貼っておく(C#と違ってラムダみたいな短い書き方出来ないけど十分使えるから、C#だともっと便利になる)
https://github.com/kgtkr/MachShooting/blob/master/Project/BuildData/script/Lib/cmd.lua
普通なら分かりにくい書き方で敵の動作を書かないといけないけど、これを使えば、
直観的、再利用可能、拡張性が高い、継承をやるまでもない簡単な機能追加が出来る
と言うメリットがある
C#風に書くとこのような書き方で敵の動作を書けるようになる(突進を行うプログラム)
void update(){
if(this.cmd.Len==0){
this.cmd.Add(new Wait(60));
this.cmd.Add(new Action(()=>this.power=30));
//※ULMは等速直線運動の略、fは継続フレーム数
this.cmd.Add(new ULM(vec:()=>new Vec(player.x-this.x,player.y-this.y).Len(10),
f:()=>距離(this,player)/10));
this.cmd.Add(new Action(()=>this.power=0));
}
}
もしこれで
this.cmd.Add(new ULM(vec:new Vec(player.x-this.x,player.y-this.y).Len(10),f:距離(this,player)/10));
とすると、Waitの間にプレイヤーが動いてしまったら対応出来ない
■ このスレッドは過去ログ倉庫に格納されています