スポンサーサイト

上記の広告は1ヶ月以上更新のないブログに表示されています。
新しい記事を書く事で広告が消せます。


本物はどれだ?

にほんブログ村 デザインブログ 3DCGへにほんブログ村 IT技術ブログ ゲーム開発へにほんブログ村 ゲームブログ PCゲームへにほんブログ村

BGE フラグスイッチとそのセーブ&ロード

BGE(Blender Game Engine)フラグのセーブ&ロード用のスクリプト作ってみました。

一か所で、簡単に管理できるようにするためのものです。

2017082301




スクリプトの記述
※コピペだけだとインデントエラーがでる可能性があるので、画像を参考にTabで空白推奨。




#save.py
import bge
def main():
cont=bge.logic.getCurrentController()
own=cont.owner
if cont.sensors[0].positive:
for num in range(0, 10):
bge.logic.globalDict[(("Sw") + (str(num)))] = own[(("prop.00") + (str(num)))]
num += 1
for num in range(10, 100):
bge.logic.globalDict[(("Sw") + (str(num)))] = own[(("prop.0") + (str(num)))]
num += 1
for num in range(100, 201):
bge.logic.globalDict[(("Sw") + (str(num)))] = own[(("prop.") + (str(num)))]
num += 1
cont.activate("SwitchSave")
main()



#load.py
import bge
def main():
cont = bge.logic.getCurrentController()
own = cont.owner
if cont.sensors[0].positive:
bge.logic.loadGlobalDict()
for num in range(0, 10):
own[(("prop.00") + (str(num)))] = bge.logic.globalDict[(("Sw") + (str(num)))]
num += 1
for num in range(10, 100):
own[(("prop.0") + (str(num)))] = bge.logic.globalDict[(("Sw") + (str(num)))]
num += 1
for num in range(100, 201):
own[(("prop.") + (str(num)))] = bge.logic.globalDict[(("Sw") + (str(num)))]
num += 1
main()





#switch.py
import bge
def main():
cont = bge.logic.getCurrentController()
own = cont.owner
sen = cont.sensors[0]
list = sen.subjects
if cont.sensors[0].positive:
own[("prop.") +(str(list[0][0:3]))] = (int(list[0][3]))
main()


ロジックの設定。上図の設定の解説です。
saveはキーボードの【S】でセーブ。
loadはキーボードの【L】でロード。

スイッチ用のプロパティを作成する必要があります。
通常、ゲームのプロパティを追加すると、『prop』が作成されます。
その後、連続で押していくと、prop.001~prop.002~~~と、追加されていくのがわかります。
これを200個ほど作るだけでOKです。(スイッチ200個用です)
ただし、propの一番最初に【prop.000】を入れておいてください。

セーブ用のアクチュエーターの名前は【SwitchSave】に変更しておいてください。


スイッチの変更の仕方。
初期値は0です。変更する場合はスイッチになっているオブジェクトにメッセージを送ります。
下図では球から、フラグスイッチになっているBoxにメッセージを送っています。

メッセージの送り方
メッセージを送るオブジェクトのアクチュエーターの件名に、スイッチの数値を入力します。
【prop.001】の数値を変更したい場合。(初期値0)
0011と入力します。するとスイッチに設定したオブジェクトのプロパティ【prop.001】の数値の値が【1】に変更されます。
0にしたい時は0010と入力すればOKです。
0.1の他に、一桁の数字なら0011~0019まで設定が可能になります。 


2017082302



他のオブジェクトからのフラグ数値の呼び出しは、アクチュエーターのプロパティコピーでスイッチオブジェクトの数値をコピーすればOKです。

まだ、試作段階だけど、何かにつかえればいいなぁ……実験成功!
スポンサーサイト


本物はどれだ?

にほんブログ村 デザインブログ 3DCGへにほんブログ村 IT技術ブログ ゲーム開発へにほんブログ村 ゲームブログ PCゲームへにほんブログ村

………


モッピー!お金がたまるポイントサイト



メニュー
最新記事
プロフィール

つくつく つくに

Author:つくつく つくに
Blender
2.76 日本語UI使用
Windows7x64

©つくx2工房

最新コメント
月別アーカイブ
………






………


検索フォーム
RSSリンクの表示
リンク
ブロとも申請フォーム

この人とブロともになる

………
にほんブログ村 デザインブログ 3DCGへ

にほんブログ村 IT技術ブログ ゲーム開発へ
にほんブログ村 ゲームブログ PCゲームへ
にほんブログ村


アフィリエイトのアクセストレード

上記広告は1ヶ月以上更新のないブログに表示されています。新しい記事を書くことで広告を消せます。