シューティングゲーム製作技術総合 15機目at GAMEDEVシューティングゲーム製作技術総合 15機目 - 暇つぶし2ch■コピペモード□スレを通常表示□オプションモード□このスレッドのURL■項目テキスト340:名前は開発中のものです。 08/04/20 04:12:04 HlE9w/ua ここで聞くのも間違いかも知れないが、今C++とSquirrelでSTGを作っているんだ。 Sqruirrelスクリプト側からC++の関数を呼ぶためには、 SQInteger func(HSQUIRRELVM v) という形のグローバル関数でなくてはいけないんだけど、スクリプト側から特定のオブジェクトを操作したいんだ。 しかし、上の形だと動的メソッドでもないし、引数にオブジェクトへのポインタが含まれていないため、どうやって呼び出そうか困ってるんだ。 HSQUIRRELVMはスタックになっているので、スクリプト側に操作したいオブジェクトのポインタをあらかじめ渡しておいて 必要なときにスタックにぶち込んで引数として利用しようと考え、 /*Squirrelスクリプト*/ function ExeScript(p) /*引数はポインタ*/ { SetVelocity(p, 0, 5, 0); /*引数は操作するオブジェクトのポインタ、x方向の速度、y方向の速度、z方向の速度*/ return 0; } /* HSQUIRRELVMのスタックには 1(top):roottable, 2:p, 3:0 4:5 5:0)となっているはず*/ というようなスクリプト側の関数を作り、ExeScriptをC++側から呼び出す時に 引数に呼び出し側のポインタをぶち込んであげようと思ったんだが上手くいかない。 ちなみにpはスクリプト側ではint型で扱っていて、ExeScriptが呼ばれたときにintにキャストし、 SetVelocityが呼び出されたときにポインタにキャストするようになっている。 何かいい方法はないだろうか…? 次ページ最新レス表示レスジャンプ類似スレ一覧スレッドの検索話題のニュースおまかせリストオプションしおりを挟むスレッドに書込スレッドの一覧暇つぶし2ch