Open mingos opened 8 years ago
データの方受け取りました。こちらを調査しまして進展がありましたら報告させていただきます。
原因が分かりましたので報告いたします。 SS5Playerではアトリビュート情報からマトリクスを作成し、Nodeのマトリクスに反映させてパーツの表示位置を再現しておりますが、 void Node::setAdditionalTransform(const Mat4* additionalTransform) 内で、Nodeのマトリクスの更新フラグ_transformDirtyがtrueとなっていたものがVer3.12から操作されなくなり、追従しなくなった、という事の様です。 対応方法を検討しておりますのでお待ちいただければと思います。
cocos2d-x Ver1.13.1のCCNode.cppを以下の様に変更すると動作する様です。
void Node::setAdditionalTransform(const Mat4* additionalTransform)
{
if (additionalTransform == nullptr)
{
delete[] _additionalTransform;
_additionalTransform = nullptr;
}
else
{
if (!_additionalTransform) {
_additionalTransform = new Mat4[2];
// _additionalTransform[1] is used as a backup for _transform
_additionalTransform[1] = _transform;
}
_additionalTransform[0] = *additionalTransform;
}
_transformUpdated = _additionalTransformDirty = _inverseDirty = true;
_transformDirty = true; //この行を追加
}
さっそく調査して頂いてありがとうございます。 v3.12でCCNode.cppを上記の内容で修正したところ、パーツが追従する事を確認できました。
developブランチにcocos側を変更せずに対応できるようにしたVer3.13.1対応プレイヤーをアップいたしました。 こちらを取得していただき動作を確認していただければと思います。 カラーブレンドが使用できない問題も解決されています。
CCNode.cppの修正を元に戻し、developブランチのSSPlayerを使用して正常にパーツが連動する事を確認しました。 ※現在、開発で使用しているcocosのバージョンがv3.12であり、 SSPlayer.cppのCustomSprite::setTexture()でコンパイルエラーが発生したため、 CustomSprite::setTexture()のオーバーライド部分をコメントアウトして検証しました。
v3.13.1についても後ほど検証してご報告します。
ご報告ありがとうございます。 setTexture()の件Ver3.12では変更が入っていない事を把握しておりませんでした。 お手数をおかけしますがsetTexture()のオーバーライド部分をコメントにしご使用いただければと思います。
cocos v3.13.1でSSPlayerのdevelopブランチをそのまま適用して正常に動作する事を確認しました。 v3.12では、setTexture()のオーバーライド部分をコメントアウトして使用させて頂きます。 ご対応ありがとうございました。
ご報告ありがとうございます。 今後ともSpriteStudioをよろしくお願いいたします。
環境
現象
以下のような入れ子のパーツがあり、青い三角形「b」は全てのフレームで座標がまったく変化しません。
Sprite Studio上で再生すると、親パーツの赤い丸「r」に正しく追随してくれますが、 cocos上で再生すると、青い三角形「b」は最初の位置からまったく動かず置き去りにされてしまいます。