投稿記事

初心者用Javaスクリプト講座の記事 (2)

【超初心者向け_Javaスクリプト講座】ツクールMV/Part②X座標Y座標&画面サイズ編


こんにちは、ヨ空です!こんにちは!
普段はゲーム制作をしております!

制作記事のついでの話でJavaスクリプトの話をしていたのですが
意外と?需要がある…ご様子なので別枠で記事にしました
(本命の制作作業が疎かにならない程度に更新させていただきます…!)

※本記事はヨ空がツクールMVの制作などで得たJava(Javaスクリプト)
Javaを Javaスクリプト未経験でもわかりやすく解説する…という内容の記事です

(慣れている方や中級者/上級者の方には物足りない内容かと思います)

こんな方向けです(Part②)

当方もスクリプトを追求中ですが
前回に続きまして、Part②は、こんな方向けです
・「ウインドウの位置とか表示する場所って、どうやって変えるの?」
・「ウインドウのサイズって変えれるの?」
・「自分流のかっこいいゲーム画面/もしくはシステム実装したいぜ!」(後々)

(X座標やY座標、画面サイズ関連についての話になります…!)
おそらく、同じJavaなのでツクールMZにも応用可能?かもしれません…

URLリンク用

【超初心者向け_Javaスクリプト講座】
Part③→URLは後日更新…予定
(プラグインの作り方、プラグイン作成のコツ等を解説予定)

Part①(前回) (javaスクリプト初見、プラグイン初見の方向けの解説)
【超初心者向け_Javaスクリプト講座】ツクールMV/Part①コアスクリプト&クラス編

(本命の制作作業が疎かにならない程度に更新させていただきます…!)

まずX座標Y座標について

前回、コアスクリプトクラス についてお話したと思います

例えばの話ですが、例えば
ゲームのUI(見た目や配置)等を改変したいとします

その場合は主にウインドウ(rpg_windows)シーン(rpg_scenes)
元に改変するんですが

皆様はX座標Y座標XY をご存じでしょうか?
座標(ざひょう:読み) なんですが、X座標、Y座標…XY

どこぞのバージョン違いとか、どこぞの特殊進化とかは関係無いです…
染色体系の話では無いんですが…
とどのつまり、座標(位置とか場所縦横)の話なんですが

位置情報で戦うSLGのゲームとかをしていた人は、わかりやすいかと思います
3D系のモデリングツール とかを触ってた人も、わかり味が深いと思います

縦横の話 になるんですが、横→縦 の順に話させていただきまして

X座標横の座標
Y座標縦の座標
という感じでして、色は特に関係無いんですが
(XとYは別物で横と縦…!という認識でOKです)
こんなイメージです


赤い横線の部分がX緑の縦線の部分がY
という感じで覚えると覚えやすいと思います


(※上記は同じ画像の物の説明だと思ってください)
一番左上の箇所が0 になりまして
例だとX+0やY+0と書いていますが
0の座標だとプラスの表記は基本的に書かないです
(あくまでもイメージみたいな物と思ってください)
横の座標、X左から右に進んで行くと+1ずつ増える
縦の座標、Y上から下に進んで行くと+1ずつ増える
と覚えてもらうとわかりやすいと思います

具体的な例なんですが
後々、画面サイズについて説明しますが

ゲーム画面には元々のサイズ があるじゃないですか
さっきのコレをイメージしてください


MVだとデフォルト(初期サイズ)
横 816縦 624 なんですが
横のX座標を例にしますと

こんな感じで右奥が816だと思ってもらってOKです
一番下の最小が0で、最大が816
816までは足したり、加算していく上手く画面に収まるよ…!という感じです
(816以上だと、画面外に飛び出して、画面に写らないか途切れた状態になります…!)
続いて、縦のY座標を例にしますと

こんな感じで一番下が624だと思ってもらってOKです
一番下の最小が0で、最大が624
624までは足したり、加算していく上手く画面に収まるよ…!という感じです
(624以上だと、画面外に飛び出して、画面に写らないか途切れた状態になります…!)
ここまでで、ざっくりとX座標とY座標について解説しました
次は画面サイズについて解説します

画面サイズについて

画面サイズについて説明したいと思います
据え置き機、家庭機やPC等テレビ画面やモニター画面 に表示される
画面の最大のサイズ なんですが
(カメラ用語で画角(がかく) とも言うらしいです)
このテレビ画面やモニター画面のゲーム画面の最大サイズ…
正式名称はCanvas(キャンバス)サイズ
キャンバスサイズ という名称らしいです
(ゲーム画面側の方のサイズ でも伝われば良いんじゃないんでしょうかね…)
キャンバスって油絵の絵画とかの紙の代わりの布なんですけど
ストレッチャー(絵画用の四角いの枠とか下敷きの板)とか
イーゼルスタンド(絵画用の固定台)をキャンバスって思ってる人も多そうな…

話戻って、画面の最大サイズもそうなんですが
プラグインを作る上でも覚えておいて欲しいんですが
ゲーム側のウインドウコマンドウインドウステータスウインドウ


※デフォルトの初期状態のツクールMVのメニュー画面の画像です
このゲーム側のウインドウ…、正式名称は無いらしく
クラスウインドウとかスクリプトウインドウとも言う言わない等で安定しないので
特に特殊な名称を指定せず、名指しの時はゲーム側のウインドウ と呼称します

このゲーム側のウインドウ
コマンドウインドウステータスウインドウの横幅のサイズと縦幅のサイズ
(※コマンドウインドウとステータスウインドウの見本イメージです)


この画像でWidthHeightという文字を確認できましたでしょうか?
早い話で解説しますが
(例のごとく、の文字色で説明させていただきます)
Width(ワイズ)(ワイスやワイドと呼ぶ人も)
Widthはウインドウの広さ、横幅のサイズを表すコードです

横幅もあれば縦幅もありまして
Height(ハイト) です!一応、ヘイト(Hate:嫌悪)ではないです
Heightはウインドウの高さ、縦幅のサイズを表すコードです

画面サイズのコードなど

※例のコードですが

Window_MenuCommand.prototype.windowWidth = function() {
	return 240;
};

メニューコマンドウインドウの横幅サイズが240…になる! という内容なんですけど
コアスクリプト(rpg_windows) のコードなんですが
メニューコマンドのWidth、横幅は上記のコードでサイズが240 になっているのに
縦幅…、Heightの方は見当たらない…(はずです)
ウインドウである以上、Heightも必ず設定する必要があるんですが
どうやって決めているの…?と言いますと

実はこれ、MenuCommandのクラスで作ってはおらず…
ベースのCommandの方のクラスを流用してHeightを作ってるんですよ

MenuCommand側では

Window_MenuCommand.prototype.numVisibleRows = function() {
	return this.maxItems();
};

WindowHeightとかは書かれておらず…
numVisibleRows と書かれていますね
(ナムビジブルロウズ)と読みます
num(ナム、ヌムとも) はnumber(ナンバー)の略で
 プログラム界で多々使われている略語の様な物と思ってもらってOKです
Visible(ビジブル) は見えているという意味合いです
 透明とか見えない意味で使われるInvisible(インビジブル)を知ってると
 多分わかりみが深いと思います
Rows(ロウズ、ロウスとも) は縦列の意味合いで
 プログラム界で使われている用語みたいな認識でOKです

とどのつまり、numVisibleRows見えている縦列の数 …という意味でして
メニューコマンドのコマンドの数…を使うという感じで書かれています
this.maxItems(); はアイテムの最大数…
コマンドの最大数…を使うよ!という意味で
max(マックス) は最大、Item(アイテム)
ざっくり説明ですが、小道具とかの意味合いで
アイテムだと知っていると理解しやすいと思います

これの、引用しているCommand側のコードなんですが

Window_Command.prototype.windowHeight = function() {
	return this.fittingHeight(this.numVisibleRows());
};

コマンド(Command)側のWindowHeight なんですが
this.fittingHeight(this.numVisibleRows()); と書かれてますね
this.numVisibleRows() は先ほどの物と同じと考えてください

fitting はフィッティング(調整する)という意味合いなんですが
調整というよりは、ピッタリ合う!ピッタリ合わせる!
という意味合いで使われてる気がしますこれ

たぶんフィット(fit)の(サイズが合う、適合する)意味合いの方が近いかも

これはメニューコマンド側のコードなんですが

Window_MenuCommand.prototype.initialize = function(x, y) {
	Window_Command.prototype.initialize.call(this, x, y);
	this.selectLast();
};

rpg_windows(コアスクリプト)の先ほどのMenuCommandのコードです
rpg_windowsのクラスのコードはこのinitialize のコードから書かれてまして…
initialize(イニシャライズ) は初期化という意味合いらしく
rpg_windows でかなり使われてます
(ここがウィンドウの表示の核みたいな物という認識でOKです)

Window_Command.prototype.initialize.call(this, x, y); の表記で
thisは省略してこのウインドウという表記で…
x, yという表記 にお気づきになられましたか? 
割愛しますが、先ほどの説明通りのX座標とY座標の表記で
xとyが0の表記で、この場合は一番右で一番上…
つまり右上にメニューコマンドのウインドウが来る ように書かれてます

上記のこれ、Commandイニシャライズの設定をcall(コール)して
呼び出す形で引用しているんですよ…
 
改変、改造しようとしているウインドウが、どのウインドウをベースにしているか…?
とかもプラグイン制作で役立つ場合が多々ありますので知っておくと便利です

this.selectLast();
最後に選択した列のコマンドにカーソルを合わせるコードです
(this.selectLast();は今回は重要ではないので、話のついで程度と思ってください)

このinitializeを使ってMenuCommandはCommandを引用していて
コマンド側 は、見えている縦列の数にピッタリ合わせる
メニューコマンド側 は、コマンドの全部の数 を指定
メニューコマンド側のWindowHeightは
コマンドの全部の数にピッタリ合わせた縦幅…という高さの縦幅サイズに
なりますよ…!という話でした

メニュー画面用の簡易プラグイン

これでメニューコマンドのウインドウの座標(X,Y) と
主なウインドウの画面サイズ(Width、Height) は教えられたと思います

ついでにメニュー画面を改造できるプラグインです

MenuWindowXY.js (3.88kB)

ダウンロード

使い方/使用方法は
【途中成果:14ページデス異界】アイテム画像制作中+簡易MVスクリプト講座③
の下の方にあります、この記事内で投稿した物と同じプラグインです
権利とかライセンスとかはヨ空からは特に無いです
改変改造OKです
ツクールMVのコアスクリプトを参照しているので
ツクール公式様の規約に従って使ってください
(と言いましたが、ツクール以外では使えないと思います…)

内容はこんな感じで

このプラグインはメニュー画面の 
メニューコマンド
メニューステータス
所持金ウインドウ
X座標、Y座標 とウインドウの横サイズと縦サイズ
変更する事ができます!
※使用例



逆向きなど、コマンドと所持金を逆など、改造できます
20行目~44行目辺り変数欄の数値をいじるとUI改造できます
//以下の数値やコードを変更してください
//メニューコマンド
var menuCommandX = (BoxWidth - 240);
var menuCommandY = 0;
var menuCommandWidth = 240; // デフォルト幅
var menuCommandHeight = Window_Base.prototype.fittingHeight(8);
//Window_Base.prototype.fittingHeight(行数);//

//メニューステータス
var menuStatusX = 0;
var menuStatusY = 0;
var menuStatusWidth = (BoxWidth - menuCommandWidth); 
var menuStatusHeight = BoxHeight; // デフォルト高さ(全体分の高さ)
// 初期位置の場合は、menuStatusX に menuCommandWidth を使ってください
// var menuStatusX = menuCommandWidth;

//メニューゴールド/所持金
var goldWindowX = (BoxWidth - menuCommandWidth);
var goldWindowY = (BoxHeight - 72);
var goldWindowWidth = 240; // デフォルト幅
var goldWindowHeight = 72; // デフォルト高さ
//コマンドウインドウのすぐ下の場合 goldWindowY を
// var goldWindowY = menuCommandHeight;
//初期位置の場合は goldWindowX を
// var goldWindowX = 0;
すでに他所様のプラグインを使用されている方ならわかると思うんですが…

すでに他所様のプラグインを使用されている方ならわかると思うんですが…
このヨ空が作ったプラグインより
バストアップ系の全身立ち絵を使いたい場合等では
別途改造が必須になってきます、正直AltMenuScreen系のプラグインを
使った方が良いかもしれません…

閲覧していただきありがとうございました!

お疲れさまでした!
長々と語らせていただきましたが 
X座標Y座標 に…、WidthHeight などの画面サイズがある…
これらの座標やサイズを使う感じのコードがある…
という事を知っていただけたでしょうか?

コードの解説は、大まかに説明させていただきまして
以上となります(他のプラグイン等は後々…)

X座標Y座標 に…、WidthHeightについて理解を深まりましたか…?
プラグインも大体わかっていただけたでしょうか?
Javaへの理解が深まった…、わかりみが深まると
ヨ空も記事を書いた甲斐があります!

(ツクール等のjavaでお困りの方のお役に立てば幸いです!
自分もゲーム制作をがんばろうと思います)

次回はプラグインの作り方プラグイン作成のコツ等について、当講座の続きを投稿しようと思います

もうjavaを始められている方はそのままファイトです!
それ以外の方、次回をご希望の方は次回更新をお待ちください…!
それでは、良い制作ライフをー!

この記事が良かったらチップを贈って支援しましょう!

チップを贈るにはユーザー登録が必要です。チップについてはこちら

【超初心者向け_Javaスクリプト講座】ツクールMV/Part①コアスクリプト&クラス編


こんにちは、ヨ空です!こんにちは!
普段はゲーム制作をしております!

制作記事のついでの話でJavaスクリプトの話をしていたのですが
意外と?需要がある…ご様子なので別枠で記事にしました
(本命の制作作業が疎かにならない程度に更新させていただきます…!)

※本記事はヨ空がツクールMVの制作などで得たJava(Javaスクリプト)
Javaを Javaスクリプト未経験でもわかりやすく解説する…という内容の記事です

(慣れている方や中級者/上級者の方には物足りない内容かと思います)

こんな方向けです(Part①)

当方もスクリプトを追求中ですが、Part①は、こんな方向けです
・「スクリプトってなにそれ?名前は一応知ってるよ!」
・「ゲーム画面を自由自在に改造できるんでしょ?」
・「自分流のかっこいいゲーム画面/もしくはシステム実装したいぜ!」(後々)

おそらく、同じJavaなのでツクールMZにも応用可能?かもしれません…

URLリンク用

【超初心者向け_Javaスクリプト講座】
Part②
【超初心者向け_Javaスクリプト講座】ツクールMV/Part②X座標Y座標&画面サイズ編

(X座標、Y座標等、画面サイズについて解説)
(本命の制作作業が疎かにならない程度に更新させていただきます…!)

まずコアスクリプトについて(Javaの簡単な説明も)

Java(読み:ジャバ)Javaスクリプトはプログラミングの言語の一種なんですが
スクールMVやMZでのスクリプトに採用されています
(Javaというプログラム/プログラミングのコードがあって
ツクールMV/MZに使われている…という認識でOKです)

そのJavaスクリプトなんですが、ファイル上のPC(パソコン)上やフォルダ上では
jsファイル」という形…形式で置かれております
js(読み:ジェイエス)
(Java、もしくはJavaスクリプトはjsファイルなんだ…!という認識でOKです)

こんな感じのツクールのフォルダです

ツクールMVのゲームエンジンの付属のフォルダ内に
jsフォルダ(javaスクリプトが入っているフォルダ) がありまして

こんなん感じです
お手元のツクールのフォルダ と参照して見てみてください
※ツクールMVのjsフォルダの中です

日付とか時刻は全然無視して考えてもらってOKです
plugins(プラグイン)フォルダ の下に
main(メイン) とかplugins(プラグインズ)
そしてrpg_core(RPGコア) とか rpg_manager(RPGマネージャー)
とかあるのは確認できましたでしょうか

そのフォルダマーク 以外のjsファイル(Javaスクリプトのファイル/上記) は…
jsファイルコアスクリプトと呼ぶ物らしいです(公式が呼称)
ようするに公式用の…ツクール本体用の
Javaスクリプトのjsファイルって事で覚えてもらってOK
です

特にいじらず、いじったり改変したりせず
Javaスクリプトのjsファイルをこのままで
ゲームを作ると、よく見かける感じの
デフォルトな外観のツクールゲームになります


(見た目を話題に使って言ってますが
ヨ空はUIの見た目をどうのこうの言う目的では無く説明目的です…!)

プラグインの使い方、登録の仕方/登録方法の大体の説明なのですが
(基本はプラグインを登録しないと使えません…)

このコアスクリプトを改変 した物を
フォルダ内のplugins(プラグイン)フォルダ側に


※このplugins(プラグイン)フォルダ です

プラグイン(自作の追加スクリプト)としてフォルダ内に入れて

プラグインフォルダの開き方は
※ゲームエディタ(ツクール)外のフォルダ
 jsフォルダpluginsフォルダへアクセスできます

※ゲームエディタ(ツクール)側では上側の
 ゲーム タブ(ヘルプ タブの左横)→フォルダを開く
 でもアクセスできます(テストプレイの下)

 その後jsフォルダ→pluginsフォルダ
(制作用にショートカットを作っておくのもアリかも…?しれません)

プラグイン(作ったjsファイルのスクリプト)を
プラグインフォルダに入れてから

エディタ側のプラグイン管理プラグイン登録して
ONで起動する事で改変できる…
ようになっています!
※この画面です


ツール タブ(先ほどのタブの左横)→プラグイン管理でアクセスできます
F10キーでも簡単にアクセスできます(ショートカット対応)

(プラグインフォルダに入れただけで起動する方法もありますが
難しくなるので省略、プラグイン管理から推奨 です)
※初期だとインターフェース的な
ゲームのベーシックプラグイン(ゲーム画面サイズの変更、キャッシュの自動クリアなど)
ロゴ表示用のプラグイン(タイトル画面の表示する前に、制作者側用のロゴ表示する)

などが入っていまして
Altプラグイン(メニュー画面を改変するプラグイン、立ち絵表示も可能)
アイテム図鑑プラグイン(アイテム図鑑を実装する)

など、いろんなプラグインが、すでにフォルダに入っておりますが
Javaが大体わかれば、改変する事も自作する事も可能です…!

では、自分が恐らく得意であろうと思う…
UI(ゲームの見た目/ゲーム画面の見た目)を改変する方法の
どこを見て、参照すればいいのかを大体説明します
コアスクリプトの内容は需要があれば簡易的に説明します
UI目的の場合、まず直視していただきたいのが
rpg_scenes(RPGシーン)rpg_windows(RPGウインドウ) の2つです

 scenes(シーン)タイトル画面やマップ画面、バトル画面のシーン
 動きみたいな物が登録されている機械仕掛け舞台装置 みたいな
 台本設計図の一部 だと思ってもらうと多分わかりみが深いと思います

 windows(ウインドウ)ウインドウ関連の項目を取り扱ってるスクリプト
 メッセージウインドウ(会話ウインドウ)選択肢ウインドウ

 メニュー画面のウインドウ とか、その他スキルとか装備とか… を含む
 名前入力画面 とかショップ画面 とかバトル画面 の…
 ウインドウ を管理していて

 シーンから引っ張って、関連 した感じで
 ウインドウを管理しているスクリプト

 シーン相方 な感じで、もう1つの台本や設計図 と思ってもらうと
 恐らく、わかりみが深いと思います

この2つを丸ごとコピー(改変/改造)して使いたい箇所を
丸ごとコピーしてプラグインとして使うのもアリっちゃあアリなんですが
多分やめた方がいいです(現在の自分の意見)

じゃあ、どう改造するの? といいますと
上記のスクリプト、sceneswindows改造するのですが
直接改造するのは絶対…これも、やめた方がいいです


Steam版 などの場合だとアップデートで書き換えられて
直接改変した部分が元の初期の姿に書き換えられてリセットされる恐れが高いです

あと、コアスクリプト直接的に触っている…ので
失敗したら1回でオシャカになってダメになってしまいます! ので
正直、安全要素が無いギャンブル…ヨ空的に絶対にオススメできません…!

続いてクラス(スクリプト)について

コアスクリプトのJavaスクリプトにはクラス(Class) という物がありまして
(コアスクリプト、Javaの中身にはクラスがあるという認識でOKです)

スクリプトの方のクラスの話になりますが…例え話なんですが
RPG用のエディタ内でも職業 などがクラス と呼ばれてますよね?**

RPGのエディタとしての職業のクラス
勇者
とか戦士魔法使い とか僧侶 とかあるじゃないですか…!
それで初期の人達には、職業が割り当てられてますよね…?
(関係無い話をしている感がありますが、似た様な感じでして…)

勇者のハロルド戦士のテレーゼ魔術師のマーシャ僧侶のルキウス
(※RPGツクールMVの場合)
勇者のアレックス戦士のブライアン魔術師のキャロル僧侶のデイジー
(RPGツクール2000の場合のうろ覚え…)

画面上では名前、職業名(クラス名)の順に基本表示されます…
(スクリプトのクラスも職業や役職の名前
舞台装置名のような名前という認識でOKです)

この勇者(職業名)のハロルド(名前)に例えて話しますが
ハロルドコアスクリプトの様な物で
勇者クラス(スクリプト) の様な物…だと思ってくださると
多分わかりみが深いと思います

ウインドウ(Windows) には勇者や戦士、魔術師や僧侶の様に
ベース用コマンド用メニュー画面用アイテム画面用 という
役職やら舞台装置名 あるのだ…という事で覚えてもらうと
恐らくわかりみが深いと思います

1つのコアスクリプトクラスの数が
野球やサッカーのチームの人数(10~20)くらいの認識でOKです

(※ウインドウ(Window)やシーン(Scene)の場合)

スクリプトのclass(クラス)についての簡易解説

後々に解説していく…としまして、コアスクリプトのクラス…
ウインドウ(rpg_windows)のクラスはどのような物があるのか?… を解説します

Window_Base.prototype…略
(これは一応はウインドウのベースのクラスのコードです)
こんな感じなのスクリプト/プラグインを見た事ありませんか?
あと、赤文字の部分違いとかで

Window_Selectable(ウインドウセレクタブル/セレクトでも可)
(これは選択肢系のウインドウ用 のクラスのコードです)

Window_Command(ウインドウコマンド/コマンドでも可)
(これはコマンドウインドウ用 のクラスのコードです)

Window_Help(ウインドウヘルプ/ヘルプ/ヘルプウインドウでも可)
(これってアイテムとかスキルや装備などの
説明文のアレのヘルプウインドウ用 のクラスのコードです)

Window_Gold(ウインドウゴールド/ゴールドでも可)
(会話用のメッセージ/選択肢ウインドウとかで右上に所持金を表示
デフォルトだと~~G(ゴールド)と表示するアレ の…
所持金表示用のウインドウ用 のクラスのコードです)
※これは使う人は使うし、使わない人は使わないかもしれません

他にもメニューコマンド(メニュー開いた時にでるコマンドリストなアレ)
の話になりますとスキル用装備用アイテムの画面用 なんかがあります
このクラスのコードさん達は独自で結構ありますw
(これものちのち…という事で)

一応載せて置きます!
Window_MenuCommand(メニューコマンド)
(上記のコマンドを引用していまして(後々解説)…
メニュー画面用 のメニューコマンドです)

Window_MenuStatus(メニューステータス)
(メニュー画面、右側のメニュー画面用の
主人公や仲間達のステータス画面用のウインドウ です)
Window_Gold(ゴールド)
(所持金のウインドウ で上記と一緒なんですが
会話ウインドウ等(右上)やショップ画面等の表示では
別枠扱いでシーン等を使って、このWindow_Gold から引用したりしてます)
(後々解説)

閲覧していただきありがとうございました!

お疲れさまでした!
長々と語らせていただきましたが 
シーンウインドウ に…、クラス と呼ばれているコードがある…
上記のような感じのコードがあるという事を知っていただけたでしょうか?

クラスの解説は、大まかに説明させていただきまして
以上となります(他のコアスクリプトのクラスは後々…)

コアスクリプトクラスについて理解を深まりましたか…?
プラグインも大体わかっていただけたでしょうか?
Javaへの理解が深まった…、わかりみが深まると
ヨ空も記事を書いた甲斐があります!

(ツクール等のjavaでお困りの方のお役に立てば幸いです!
自分もゲーム制作をがんばろうと思います)

次回はX座標Y座標画面サイズについて、当講座の続きを投稿しようと思います

もうjavaを始められている方はそのままファイトです!
それ以外の方、次回をご希望の方は次回更新をお待ちください…!
それでは、良い制作ライフをー!

この記事が良かったらチップを贈って支援しましょう!

チップを贈るにはユーザー登録が必要です。チップについてはこちら

月別アーカイブ

限定特典から探す

記事を検索