抹さんメモその4

ぐへぇ、やっと先に進めるわ。
前にグラフィック合成器で作ったキャラを表示して、ゲームパッドの入力も画面の下に表示できた。
luaキー入力周り
ゲームパッドのボタン押しながらスクリーンショットは撮りづらい。
◯×□△だと文字打ち面倒なので4ボタンはSFC仕様のABYX。制作側が分かれば問題無。

テクスチャ読み込みは NSDLoad(1,"pic/img.png") みたいな感じ。
「¥」じゃなくて、「/」使うとフォルダの中の画像拾ってこれた。 なんでか分からん。
歩行アニメーションは未実装。 表示しただけ。

スクリプト汚いから配列だかテーブルだか使ってもうちょっと整えたいわ。



んでは

抹さんメモその3

なんかゲームパッドと、USBゲームパッドコンバータで繋いだPS2コンの出力信号が違う・・・。
こりゃキーコンフィング作らんとダメかもしれん。 ( ´゚д゚`)エーマジカヨー

補足
getkey.dllで、コントローラの入力状態が取得できるのは、X軸,Y軸,Z軸,ボタンの4つ。
アナログなら、X軸Y軸は十字キーもしくはL3、Z軸はR3で□△×◯
デジタルなら、X軸Y軸はL3スティック(十字キーは信号無し)、Z軸はR3スティック
L3R3スティックを倒した時の信号はXYZ軸の方、押し込んだ信号はボタン側で出力されてる。

ボタンに出力される数値
対応ボタン(PSコン準拠)ゲームパッド(ELECOM製)PS2コン
14
28
×41
82
L11616
R13264
L26432
R2128128
SELECT256256
START512512
L310241024
R320482048
4096
8192

16384

32768




















割と同じじゃないって言うね。 
しかもなんでPS2コンは十字キーの出力までボタンに出てんの・・・意味わかんないorz

ちなみにボタン同時押しすると、対応した数値の合計が出力されてる。
STARTとSELECT同時押しで256+512=768 みたいな感じ。
ボタンに出力されてる十字キーの信号を省くためにも、押下ボタンの合計値を取得して4096で割ったあまりを計算したほうが良いかも。

とりあえず、十字キーでテクスチャ動かしてみる。 ボタンはその後だわ。



ではね

抹さんメモその2

前回の続き
・・・で、ループに入る前とループ中に処理しないといけない事は・・・なんだろう?
アクションゲームで必要な基本構造は、言語やゲームジャンルを問わず同じ気がする。
まぁ、2Dな上にNScripter+Luaだけど。 たぶんこんな感じ? 

function NSCOM_sub ()
--「定数」
--画像ファイルの読み込み
--各パラメータの初期化、設定
     while true do
          if NSDoEvents() then return end  --Windowsのメッセージを処理
          NSSleep(1)                   --ほかのスレッドに動作を明け渡す
          --キー入力
          --当たり判定(接地、空中、飛来物...etc)
          --移動物の座標計算(壁や地面などの、めり込み修正もここのへん)
          --画面をリセットする(真っ黒)
          --画像呼出
          --画像の描画
          --フレーム計算

          if NSGetKey("z") then return end  --Zキーで終了(クリア条件とか?)
     end
end

動きが特殊なのは、とりあえず放置。
第一段階として、ゲームパッドで適当に用意したテクスチャを動かすことから始めますかね。

あ、何気に君影草工房さんの「getkey.dll」必須だわ。 NScripter2だとゲームパッドの入力を取得する命令があるから必要無いのよねー・・・まぁいいか、大した手間でもなし。



でーはー

抹さんメモその1

1月1日は休み。(たまたま)
暫くはゲーム制作のメモ代わりに更新します。

「NScripterの処理をLuaで乗っ取ることが出来る」とか、どっかで見た気がするんだけど何処だったか忘れた・・・orz
んー・・・Luaでミニゲーム作るとしたらどうしたもんだろう? というわけで、ちょっと考えてみる。

基本的な流れはこんな感じ?
メニューからミニゲームの処理に飛ぶアイコンを選択→ミニゲーム実行→ミニゲーム終了→選択画面に戻る。

00.txtとsystem.luaの記述はどうするか?
「NScripter最終版」の「サンプル3 各種入力関数のサンプル」をベースにすれば出来そうな気がする。 ちなみにサンプル3の内容は、マウスポインタの現在値をリアルタイムで取得するというもの。

マウスポインタ周りの処理を消すとこんなん。(system.lua)
function NSCOM_sub ()
     while true do
          if NSDoEvents() then return end
          NSSleep(1)

          if NSGetKey("z") then return end
     end
end

これはwhile true doからend間を何もしないでループするだけ。 Zキーが押されると終了。 00.txtの呼び出し元へ戻る。 Zキーじゃなくて、ミニゲームクリアのフラグでループから抜けるようにすればうまくいきそうな気がする。

NSSleep(1)とNSDoEvents()は、ほかのスレッドに動作を明け渡すとか、Windowsのメッセージ処理とからしい。よく分からんけど無いと後で困るらしい。

ゲームパッド入力、キャラのベクトル計算、テクスチャの表示は、NSSleep(1)の後に記述してく感じになるのかなぁ・・・? なんにせよスクリプトを綺麗にするため、それぞれの関数作る必要がありそう。 関数かぁ・・・。

とりあえず今回はここまで。



んでは。
プロフィール

抹(まっ)

Author:抹(まっ)
性別 男

まぁ、お茶でも飲んでゆっくりしようじゃないの?

カレンダー
12 | 2016/01 | 02
- - - - - 1 2
3 4 5 6 7 8 9
10 11 12 13 14 15 16
17 18 19 20 21 22 23
24 25 26 27 28 29 30
31 - - - - - -
利用中のソフトと素材屋リンク
今まで、こんだけ来てるらしい
最新コメント
カテゴリ
月別