ページ 11

【解決済み】Sprite_Weaponの座標管理

Posted: 2021年8月15日(日) 22:16
by finga
お世話になっております。

サイドビューバトルにおいて、アクターのバトラー画像を従来の物とは違う規格の物に変更したため、
武器画像を表示しているSprite_Weaponの表示座標に変更を加える処理が必要になるのですが、
rmmz_sprites.jsやrmmz_scenes.jsにそれらしき記述が見当たらず、作業が難航しております。

こちら、どのように表示座標を指定して表示させているものなのでしょうか。
どなたか、ご教授をお願いいたします。

よろしくお願いいたします。

Re: Sprite_Weaponの座標管理

Posted: 2021年8月16日(月) 08:18
by WTR
rmmz_sprites.js 2749行目 (最新ver じゃないので環境によって違うかも…
Sprite_Weapon.prototype.initMembers のなかで this.x = -16 と記述があります。
ここを変更・追記すればよいかと。

変更部分をプラグインにして

コード: 全て選択

(() => {
    "use strict";
	const _Sprite_Weapon_initMembers = Sprite_Weapon.prototype.initMembers;
	Sprite_Weapon.prototype.initMembers = function() {
		_Sprite_Weapon_initMembers.call(this);
	    this.x = -32; //適当です
	    this.y = 16; //適当です
	};
})();
こんな感じで出来るかと思います。

Re: Sprite_Weaponの座標管理

Posted: 2021年8月16日(月) 09:40
by finga
WTRさん

ご回答いただき、ありがとうございます。
後程、試させていただきます!

そちらなのですが、x座標のみ指定されており、数値もマイナスのため、何かの基準となる座標に対しての相対的な値のように見受けられます。
どこかで絶対的な座標を定義しているかと思うのですが、そちらがどこに記述されているのか、探しても見当たらないのですよね…

Re: Sprite_Weaponの座標管理

Posted: 2021年8月16日(月) 09:57
by WTR
いまソースを見れないので確かなことは言えないですが
Sprite_Actor に対する相対座標だと思います。

Sprite_Actor を見ていくと、たぶんどこかに new Sprite_Weapon()  という記述があり
Sprite_Weapon のインスタンスが Sprite_Actor の子要素に追加されていると思います。

キャラクター毎、あるいは武器毎に位置を変えたいとなると
単純にオフセットさせるだけでは不足しますがとりあえず言われてないことは考えないことにしました。

Sprite_Actor の絶対座標は setHome とかいうメソッドがあってそれで決めていたような気がしますが
ちょっとあやふやです…

Re: Sprite_Weaponの座標管理

Posted: 2021年8月16日(月) 18:46
by finga
お疲れ様です。

いただいたコードを元に実装してみたところ、座標が変わっていることを確認いたしました!
無事、解決です。ありがとうございました。

Addchildですが、rmmz_sprites.jsの711行目から、その記述がありました。

コード: 全て選択

Sprite_Actor.prototype.createWeaponSprite = function() {
 this._weaponSprite = new Sprite_Weapon();
    this.addChild(this._weaponSprite);
};
AddChildで子要素に加えると、座標も親と連動して動く仕組みになっている事を知らず、
ずっと探していました。
これで謎が解けました。

重ね重ね、ありがとうございました。