Re:オブジェクトの削除(EndObject)について【Blender Game Engine】

こちらの記事は、「GameBlender(Blender Game Engine)とは」の質問コメントを記事にしたものです。






こんにちは、たびたび失礼します。
TB-codeの方を見させてもらっているのですが、最新のblenderではコードが動作しないように思います。

最新のコードを解説している公式ページというのはどこにあるのでしょうか?
http://www.blender.org/documentation/blender_python_api_2_70_release/bge.logic.htmlのページだとは思うんですが、古いコードとかなり異なっているように見えます。
2014-06-27(08:12) : 名無しさん



こんにちはー。最新のページはそれで良いですよ。

TB-codeは、ページ毎にバージョンが違います(どのバージョンかは各ページに記載しています)。
BGE API Samplesのトップページにも記載してある通り、2.48→2.50にかけて、後方互換を捨てた大きな仕様変更があったので、2.49で書かれているページなんかは、少なくともモジュール名を変えないと動かないと思います。
例:GameLogic => bge.logic

あとは、ぱっと見、そんなに大きく変わっているとは思わないのですが、詳しくチェックしているわけではないので、仕様が変わったものもあるかもですねぇ。

逐一、最新バージョンのリファレンスをチェックして、動作確認をし、サイトを更新するのは無理なので、「これがしたかったのに、出来なかったー」と報告してくれると助かります。
2014-06-28(01:20) : TiBra




回答ありがとうございます。
https://sites.google.com/site/tibracode/bge/delete_objectのページにあるコードを、beg.logicに置き換えてから試してみたのですが、動かないのですが、どこが悪いかわからないでしょうか?ファイルを添付させていただきます。
http://kie.nu/1-DU

情報不足で、基本的な動かし方自体、理解できていない部分があると思います、、、。

それと、http://www.blender.org/documentation/blender_python_api_2_71_0/bge.types.KX_SCA_EndObjectActuator.html#bge.types.KX_SCA_EndObjectActuatorのページの、endobjectアクチュエータの項を見ると、パイソンのメソッドがないといったことが書いてあります。これはどういう意味なんでしょうか?
現状、endobjectはパイソンコードで使えなくなっているということでしょうか?

たびたび申し訳ありません(´・ω・`)
2014-06-28(19:21) : 名無しさん




データ拝見しました。すみません。サイトのスペルが間違ってましたね^^;
× sence.objcets["obj_name"]
○ sence.objects["obj_name"]

Window->Toggle System Console でエラーが表示されるので、ここは確認するようにした方が良いです。
up_2014062910342118a.png

サイトで、記載してあるオブジェクトの削除は、GameObjectのendObjectメソッドを利用したものです。

それとは別に、EndObjectアクチュエータを利用してオブジェクトを削除する方法もあり、別物と考えてください。
こちらはロジックで繋げるだけで、スクリプトなしでも削除が行えます。

EndObjectアクチュエータには、メソッドはないので、ないと記載しているだけですね。
もちろん、Pythonからでもアクチュエータを動作(activate)させれば、機能しますが、GameObjectのendObjectメソッドを使う方が楽なので、スクリプトを使う時は使わないかな。


この辺の情報を含めるようにページを更新しておこうと思います。
質問・報告があると、更新するきっかけになりますので、不明な点があれば、また聞いてください。
2014-06-29(11:11) : TiBra



やっと動かすことができました、ありがとうございました。
endobjectメソッドについてなのですが、公式ページのどこに記載されているのか教えてもらえないでしょうか。
いまいち、調べ方がわかりません(´・ω・`)

個人サイトでメソッドをまとめているところはたくさんありますが、公式を見ておきたいので、、。
2014-06-30(17:34) : 名無しさん



リファレンスならこちらになります。
http://www.blender.org/documentation/blender_python_api_2_71_release/bge.types.KX_GameObject.html#bge.types.KX_GameObject.endObject

メソッドというのは、クラスオブジェクトの機能のことなので、「GameObjectのendObjectメソッド」は、GameObject(クラス)のところにあります。

GameObjectを色々操作したいなら、まずGameObject自身が持っている機能(メソッド)を確認してみる。

なかったら、アクチュエータを当たってみる。

それでもなかったら、GameObjectのパラメータを直接変更して、操作する。

そんな感じですかね。
2014-07-01(23:00) : TiBra



回答ありがとうございます。
そこにありましたか、てっきりGame Logic (bge.logic)の項目にあるものだと思って、さまよってました。
Game Types (bge.types)とGame Logic (bge.logic)の項目がありますが、両者の違いって何でしょうか?
あと、kx、scaといった頭文字がついていますが、これはどういう意味(区分)なんでしょうか。

たびたびすみません。
2014-07-02(17:04) : 名無しさん



ゲームでの、saveとload機能を実現させたいなと思って、pythonについてずっと調べていたのですが、ロジックのアクチュエータだけでは機能しないようにできているんですよね。
コードを使わないとできないみたいなんですが、どんな機能を用いればいいのでしょうか?

アクチュエータでsave.bge.logic.globalDictを実行するまではいいのですが、その先はpythonで何らかの操作を行わなければいけない気がします。

youtubeのチュートリアルを見てもいまいち理解できなかったので聞かせていただきます。
たびたびすみません。

2014-07-02(20:35) : 名無しさん




>Game TypesとGame Logicの項目、両者の違いって何でしょうか?
リファレンスの冒頭(Introduction)にそのまま書いてある通りですね。

>kx、scaといった頭文字がついていますが、これはどういう意味(区分)なんでしょうか。
んー、さぁ?ちゃんと見ていけば分かると思いますが、とくに気にしてませんねぇ。

>ゲームでの、saveとload機能を実現させたい・・・どんな機能を用いればいいのでしょうか?
セーブデータにどんな情報を保存すればよいか?それはゲームによって様々ですよね。カードゲームとアクションゲームのセーブデータの内容が同じでしょうか?
それが分かれば、アクチュエータ等だけではどうにもならないと何となく想像がつくかと思うのですが、どうでしょう?

セーブを実装するには、まずどんな情報を保存する必要があるか考えます。その後、その情報を引き出し、ファイルに書き出せば良い。それら(例えば座標など)の情報を引き出すにはどんな風にすればよいか、それら情報を書き出すにはどんな機能を用いればよいか、などと聞かれれば答えようがあります。

ちょっといくらか、アドバイスします。

・もっと理論立てて考えてみましょう
それをするにはどんな方法があるか、どのような流れで、どんな機能が必要か、を考えて調べるようにすると効率がよいです。
これは知識を必要とすることではありませんし、何をするにも必要なことだと思います。

・言葉の意味はなるべく自分で調べるようにしましょう
人の説明で分からない言葉があれば、その言葉の意味を納得できるようにしてください。
言葉には大抵複数の意味がありますし、使い方も違うかもしれません。自分の解釈が相手の意図と一致しているか注意を払わないといけません。
それが無いと堂々巡りになって、質問する方も答える方も萎えてしまいます。

質問は構わないのですが、自分がしたいことの多くが、他人を必要としたら、自分のしたいことはなかなか進みませんよね。
人に聞いた方が手っ取り早いこともあるので、バランスは大事ですが、受け答えや質問内容をみるに、ちょっと思考が足りないかなと思います。

あ、もちろん、分からないことは自由に気軽に聞いてください。ただ、その時は具体的に。具体的に聞けるかどうかは、ちゃんと考えたかどうかです。
2014-07-08(01:12) : TiBra

関連記事

コメント

こんにちは。たびたび失礼します。
bgeでゲームを実行すると、どうしてもジャギーが出るのですが、これを滑らかにすることは出来ないのでしょうか?
レンダータブに「aa samples」と言う項目があるんですが、この数値を弄くっても変化がありません。ゲームエンジンではアンチエイリアス的な機能は使えないのでしょうか?

こんばんは。
>ゲームエンジンではアンチエイリアス的な機能は使えないのでしょうか?
んー、軽くググってみた感じでは使えるみたいですけどね。と言いつつ、私もやってみたのですが、反映されませんでした。

http://blender.stackexchange.com/questions/8924/it-is-possible-to-use-antialiasing-in-multitexture-mode

こちらのコメント欄で、IntelのCPU統合型グラフィックス(Intel HD Graphices等)では、AAをサポートしていないものもあるとありますが、グラフィック環境はどうでしょう?

私の場合(Intel HD4400)だと、ネイティブサポートはしてない云々あるので、その関係だと思いますが。
https://software.intel.com/sites/default/files/4th_Generation_Core_Graphics_Developers_Guide_Final.pdf

回答ありがとうございます。
なるほど、ハードが非対応ということですか。
それならどうしようもないですね、、、(´・ω・`)
こちらの環境でもダメみたいでした。

もう1つ質問させてもらっていいでしょうか?
どうして、bgeはunrealやunityに比べて表現力が劣っているんでしょうか?unrealは分かりませんが、unityも同じopenglだった気がしますが、どこで差がついているんでしょう。
youtubeで作品を見ていると、bgeの方が劣っているように見えます。

UnityやUnrealを実際に使ってないので確定したことは言えませんが・・、

BGEでも作りこめば、表現力が劣るということはないのでしょうが、作りこむのが手間なんでしょう。
Unityは商用製品の分、アドオンやアセットが充実しており、手っ取り早くそれなりのものを作るのが、BGEよりも楽なんだと思います。多少でもお金をかけるなら尚のこと。

あとは、作ってる人の本気度でしょうね。
おそらくUnity等を使っている人は、商用を見据えていたりして、手間やお金をかける人の割合が多いのではないかと思います。

BGEはお世辞にも商用に適したプラットフォームとは言えないので、完全な趣味で、ゆるゆるやっている人が多いのでしょう。私のように^^

作りこみですか、、、。
記事でも紹介されていましたけど、ロジックがpythonで動いているとのことなので、軽めに作る人も多いのでしょうかね。

あと、ライティングも影などがくっきり出る方式(?)なので、CGっぽさが出てしまうんでしょうかね、、、。sunライトのfulstumという部分を弄くると影のふちが淡い感じになりますが、どうもカクカクした感じです。
bge内では、影を淡い感じにはできないのでしょうか?

たびたびすみません(´・ω・`)

すみません、バッファーtypeという部分をいじってぼかせました。
自分のPCではちょっと重くて無理ですね。
ブラー系って結構重いんですね、、、。

何度も書き込み失礼しました(´・ω・`)

コメントの投稿

非公開コメント

このブログについて
□ ブログ内容
決まった趣旨はありません。
興味を持ったこと・日常で行ったことを何でも書きます。

3DCG・プログラミングなどが多めです。

□ 現在の活動
・ウェブサイト制作
 (http://tiblab.net)
・3Dゲーム制作
 (コックパニック)
検索フォーム
ユーザータグ

Blender キャプチャ blendファイル BGE Python GameEngine ムービー Android CG  Red5 Terragen C# C++ 

カテゴリー
プロフィール

TiBra

Author:TiBra
趣味でCG制作、プログラミング等を行っています。メイカーズに憧れています。

ネットを通じた交流を広げたく思っていますので、コメント・メールはお気軽にどぞー

戯言程度のことは、こちらのブログに投稿しています。基本戯言なので、実質移転しているようなものです。

Mail:tibraあっとlive.jp
HP:TibLabmemocode
動画:VimeoFC2動画ニコニコ
ファイル:SkyDrive
企画:3Dゲーム作業実況

Blogリンク
不都合がございましたらご連絡ください。
当ブログのリンクバナー
FC2 ID
FC2カウンター
RSSフィード+解析コード