原カバンは鞄のお店ではありません。

Unityを使ったゲーム制作のあれこれを綴っていきます。

【雑記】単眼立体視できるかな

メニュー画面を作ろう

何故かこの時期になると何かに追われているような感覚になる皆さんこんにちは。私はやることが多すぎて現実逃避中です。

 

そう、この週末の目標は「メニュー画面を作ろう」だったはず、、、なのですが、何故か途中から「あれ?これで単眼立体視できそうじゃない?」に目標が変わり、全く予定になかった作業で時間を潰すという週末でした。ええ、りっぱな現実逃避です。

 

単眼立体視とは

Google先生に尋ねてみると色々と難しい理論を教えてくれるのですが、単純言えば「片目を閉じたら立体的に見える」現象を指します。

具体的な例を挙げると、ORESAMAというバンドのMVの殆どがこの単眼立体視を利用したMVとなっています。

 

www.youtube.com

www.youtube.com

パッと見は80年代アニメ風なMVですが、片目を閉じたらあら不思議、文字やキャラクターが浮き上がって見えます。

 

これは目の錯覚が起こす現象で、主に「相対的な大きさ」や「運動視差」、「遮蔽」等々といった要因があるのですが、要は「遠くにある物=小さく、ゆっくり動く」「近くにある物=大きく、早く動く」という法則に乗っ取ることが大事らしい。

 

そこでこんな感じのシーンを作ってみました

f:id:Karvan:20191217215404g:plain

宙を漂う六角形のオブジェクトは先程の法則に従う形で配置して動かしています。

まぁ、片目を閉じて見ると立体的に見えなくもない。ですが、かなり慣れを要します。

 

立体感をより強調させるために

より立体感を出す技法としてはSplitDepthGIFsと技法が有名です。

https://img.youtube.com/vi/JcGUByJt-Jo/0.jpg

(出典:img.youtube.com)

 

平面画像を分割し、それを疑似的な深度の違いに利用することで立体感を強調します。

 

 これを利用して先程のシーンに縦線を追加、オブジェクトは右側の線の上を通過して、左の線の下へ通過するようにします。

 f:id:Karvan:20191217220218g:plain


 先程よりは立体感が増した気がしますね。


では、縦線の位置を逆にして、オブジェクトは右側の線の下から左の線の上へ通過するようにしたらどうでしょう?

 

f:id:Karvan:20191217220606g:plain

こちらの方が立体視し易いと思います。


他にも距離によって陰影を変えたりするのも効果的らしいのですが、それはまた別の機会に。

【雑記】ブログ100記事を記念して振り返る

ブログ開設から2年

満員電車なのに何故か自分の横の席だけ空いていると不安になる皆さんこんにちは。かといってデブのオッサンが座ってくると憂鬱になります。

 

さて、早いのか遅いのか分かりませんが、当ブログはこの記事で100記事目になるみたいです。

自作ゲームの進捗とUnity関連の記事だけで2年間も続けられた事に我ながら驚いているのですが、ネタが無くなりそうで無くならないUnityの奥深さに感嘆するばかりです。

 

つい最近ではUnityを2019.3.0にバージョンアップしたらOdinのタグを使った設定がInspectorから全く変更できなくなる、というトラップに見事に引っ掛かって、これで一体何度目だ、てめぇどうしてくれよう、とか怒りに震える経験をしたり、本当にUnity関連についてはネタが付きません。ありがとうございます。

 

assetstore.unity.com

なので今回はUnityカテゴリの記事100本目を記念して、ブログを開設してから今までの2年間を振り返ってみたいと思います。

 

開設1年目(2017/12~2018)

・上半期の記事(抜粋)

開設したばかりなのでモチベーションも高くて、力を入れて書いている記事が多いです。

今でもよく読まれているみたいで、 特にスプライトマスクの記事はgoogleで「Unity SpriteMask」で検索すると3番目ぐらいに出てきます。(1番目はテラシュールブログさんです、流石です)

 

また、丁度この時期に"Stab of Bee Project"第一弾のCutieCircuitをリリースしました。
 

goo.gl

 

・下半期の記事(抜粋)

 この時期はDull Things No Life(→Android→iOS)開発中だったので、開発中に調べた技術についての報告記事が多いですね。

bit.ly

Dull Things No Life

Dull Things No Life

  • Takafumi Hara
  • ゲーム
  • 無料

apps.apple.com

Koreographerの記事はUnity AssetStoreまとめさんに何度か取り上げられてもらったりして、本当にありがとうございました。

 

 2年目(2019)

 ・上半期の記事(抜粋)

 [Dull Things No Life](→Android→iOS)をリリースしてダウンロード数は伸びないのに問題ばかり起こって心が折れかけた時期ですね。

振り返ってみるとAdMobのアカウントが停止されたり、 GooglePlayにBanされたり、本当に碌なことがなかった。

 

・下半期の記事(抜粋)

 上半期に負った心の傷が癒えないまま2.5D-STGの開発を始めて、全く進捗が進まないために記事の内容も薄くなってますね、反省します。

 

とはいえ、気づいた方もいるかもしれませんが、この2年間で初めてUnityのアップデート関連で問題が発生することがなかった時期でした。仕事も恋愛もアプリ開発も、全ての事が思うように行かなかった2019年でしたが、これだけは光明に思える事で、これを支えに来年も頑張ろうと思っていたのですが、、、ええ、冒頭の出来事が起こるまではね。・・・一体どうしてくれよう。

 

ちなみにInspectorの設定はOdinを更新したらあっさり直りました。
Unityさん、来年もよろしくお願いいたします。

 

 

 

【Unity】LineRenderにスクリプトからBoxColliderを設置する

2019年もあと少し

今年も早いもので残り一か月を切りました。毎年この時期になると健康診断へ強制的に行かされて、毎度のように「少しは痩せないといけませんねぇ・・」と医者に告げられる皆さんこんにちは。いやいや、それができれば苦労しないんですが。

 

LineRendererで線を引く

さて、幾つか前の記事でLineRendererを使ってゲーム空間に線を引けるようになったので、最近は調子に乗って特定のオブジェクト間に線を引く処理を作り込んでいました。

 

f:id:Karvan:20191203232526p:plain

こんな感じ。

紫色のビームは全てLineRendererとなっています。ラインが結んでいるオブジェクトの位置を変更すると、スクリプトで自動的に引き直すので好きな位置にラインを描けるようになりました。

 

とはいえ・・・

f:id:Karvan:20191203232645p:plain

 

あれ?

f:id:Karvan:20191203232729p:plain

自機がビームを素通りしてしまう。。。

 

まぁ、LineRendererは線を引くだけでColliderは設置されないので当然と言えば当然ですが。

なので、今回はスクリプトからオブジェクトにCollider(BoxCollider)を設定する処理に取り組んでみました。

 

 設置するだけなら簡単

LineRendererはLineRendererコンポーネントを設定したオブジェクトをシーンに設置することで線を描きます。

なので、このオブジェクトにBoxColliderコンポーネントを追加すれば良い・・・はず。

 

// Lineオブジェクトの生成
GameObject beam = Instantiate(BeamPrefab,
                    new Vector3(0, 0, 0),
                    Quaternion.identity) as GameObject;

// Colliderの設置
bm.AddComponent<BoxCollider>();

 

LineRendererのPrefabをInstaniateで生成後、直ぐにColliderの設置してみます。

すると・・・

f:id:Karvan:20191203233134p:plain

 

f:id:Karvan:20191203233233p:plain

 むうぅ、、ずいぶんと離れた位置にできてしまう。。。

  ならば、LineRendererが線を描画した後にColliderを設置してみよう、というわけで、こんな感じに処理を変更  

// Lineオブジェクトの生成
GameObject beam = Instantiate(BeamPrefab, new Vector3(0, 0, 0), Quaternion.identity) as GameObject; // LineRenderer取得 LineRenderer line = beam.GetComponent<LineRenderer>(); // 頂点数を指定する line.positionCount = posList.Count; // LineRendererに座標を指定 for (int iLoop = 0; iLoop < posList.Count; iLoop++) { line.SetPosition(iLoop, posList[iLoop]); } // Colliderの設置 beam.AddComponent<BoxCollider>();

LineRendererに座標を設定した時点で画面に描画されるので、その直後ならColliderはきれいに設定されるはず。

 結果・・・

f:id:Karvan:20191203233630p:plain

おお、ちゃんとLineRendererに沿ってColliderが設定されている!!
さすがUnity!!Unity優秀!

 じゃあ、斜めに引いたLineに関してはどうかな?

 

f:id:Karvan:20191203233842p:plain

 なんかデカい・・・

f:id:Karvan:20191203233233p:plain

むうぅ、、そうか、BoxColliderってSize指定はできてもRotation指定はできないのでこんな感じになるのか・・・

 

試行錯誤の上


BoxColliderにはRotationの指定はできないので、BoxColliderを設置するオブジェクト自体を回転させる必要があります。

 なので、最初に描画するLineの角度を計算してオブジェクトを回転させた後に、Line描画⇒Colliderの設置を行う。

加えてColliderの太さ(XY平面サイズ)は固定になるようにサイズを設定する、ように変更しました。

// Lineオブジェクトの生成
GameObject beam = Instantiate(BeamPrefab,
                    new Vector3(0, 0, 0),
                    Quaternion.identity) as GameObject;

// Vectorの角度取得
Vector3 distVec = posList[posList.Count - 1] - posList[0];
var axis = Vector3.Cross(Vector3.forward, distVec);
var angle = Vector3.Angle(Vector3.forward, distVec) * (axis.y < 0 ? -1 : 1);

//  Lineオブジェクトの向きを設定する
beam.transform.eulerAngles = new Vector3(0.0f, angle, 0.0f);

// LineRenderer取得
LineRenderer line = beam.GetComponent<LineRenderer>();

// 頂点数を指定する
line.positionCount = posList.Count;

// LineRendererに座標を指定
for (int iLoop = 0; iLoop < posList.Count; iLoop++)
{
    line.SetPosition(iLoop, posList[iLoop]);
}

// Colliderの設置
beam.AddComponent<BoxCollider>();

// 太さは固定となるようにサイズ変更
BoxCollider col = bm.GetComponent<BoxCollider>();
Vector3 colSize = col.size;
col.size = new Vector3(4.0f, 8.0f, colSize.z);
 
で、これらの工夫をした結果、やっと・・・

f:id:Karvan:20191203234545p:plain

 LineRendererに沿ったColliderが設定できるようになりました!!パチパチ

ちょっと分かりずらいと思うので、横から見た図も載せますね。

f:id:Karvan:20191203234747p:plain

 ・・・

f:id:Karvan:20191203233233p:plain

むうぅ、横から見ても分かりづらい・・・

 

【進捗報告】STGにはとりあえずモアイ像が必要

衝撃の事実

暫く連絡を取っていない友人にメールを送信したら、「送信先のメールアドレスが見つかりませんでした。メールアドレスをご確認ください。」と返信された皆さんこんにちは。しかも二か月前に会社を辞めていて、送別会もちゃんと行われたらしい、と知らされた皆さんこんにちは。おっかしいなぁ~、私の携帯にはそんな連絡一切入ってないんですが。

 

まぁ、そんなことは昔から慣れっこで、高校時代に文化祭の打ち上げだとかでクラス全員でボーリング大会が企画されていたのに、何故か当日になって「ごめん、中止になった」と聞かされ、仕方なく帰宅していたらボーリング場へ向かうクラスメイトとすれ違う、とか、十年ぶりにあったクラスメイトに「あれ?どうしてこの前の同窓会来なかったの?」と聞かれて、いや、だからそんな連絡一切入ってないんですが、とか、そんなことは多々あるので、、、大丈夫です、私は強く生きています。

 

進捗報告

そんな訳で全くモチベーションが上がらないし上げるような出来事もないしで、鬱な感情を引きづったまま開発を進めていたら、この一週間の間にこんなギミックを作っていました。

 

f:id:Karvan:20191126215108g:plain

 

何故STGなのに電車が出てくるの?とか聞かないで下さい、私にだって分からないんですから。


あと、偶にモアイ像も出て来ます。

f:id:Karvan:20191126215236g:plain

 

まぁ、STGにはとりあえずモアイ像は必要ってことで。

 

 

【Unity】アセット「Living Particles」の使い方を学ぶ

今週も・・・

わざわざ遠出してコンサートを観に行ったらカップルばかりの席に囲まれて、敗北感を味わいながらクラップハンズ&コールの二時間を過ごした皆さんこんにちは。

両サイドのカップルはどちらも体を寄せ合って観ていたらしく、左右のスペースが広がって私はジャンプし放題で超ラッキー、ってうるせえバーカ。バラード曲でお決まりのように彼女が号泣してそれを彼氏が慰める、という光景を見て見ぬふりをし続けた私が一番泣きたい。

 

 独身の日セール

そんなわけで精神的に荒れ放題な日々なのですが、先週の11月11日は中国では独身の日だそうで、それを記念してなのかUnityのアセットストアで一日限定のセールが行われました。その名も「独身の日セール」、一日限定とはいえ1万点以上のアセットが50%OFFの特大セールです、それに「独身の日」セールって名前、まるで私のために用意されたかのようなセールだしね、ってうるせえ、バーカ。

で、まぁ折角なので一つぐらいは購入しようと決めて、セール期限ギリギリだったのですが以前から気になっていたアセット「Living Particles」を購入しました。

 

vimeo.com

上の動画でもわかるように、この「Living Particles」一般的なパーティクルとは違ってオブジェクトの周囲でパーティクルの動作が大きく変化します。

お札や木の葉が宙を舞ったり、ウネる大地の中でフラットな地形ができたり、それがオブジェクトの動きに反応して動作しています。

使いこなすことができれば印象に残るダイナミックでインパクトのある映像が作れそうです。

 assetstore.unity.com

 

概要

「Living Particles」のパーティクルには大きく分けて3つのパターンがあります。

 

・オブジェクトの周囲を避けるように動くパターン

f:id:Karvan:20191118014250g:plain

 

・動く地面に平らな足場が作られるパターン

f:id:Karvan:20191118014113g:plain

 

・オブジェクトとの距離に合わせて形状が変化するパターン

f:id:Karvan:20191118013936g:plain

 

どのパターンでも特定のオブジェクトの周辺でパーティクルの挙動が変わりますが、これはParticle Systemだけで実現しているのではなくShaderとScriptもセットとなって実現している処理となっています。

 

なので「Living Particles」のパーティクルを使う場合は、Particle SystemとShader、ScriptがセットなったPrefabを使います。Particle System単体だけを取り出して使ってもデモシーンのようなエフェクトは実現されません

 

使い方

使い方自体は簡単で、ShineVFX/Living Particlesの配下にPrefabフォルダに各パーティクルのPrefabが格納されているので、それをゲームシーンにドラッグアンドドロップします。

f:id:Karvan:20191119215236p:plain

 

Inspectorで「Living Particle Controller」コンポーネントのAffectorにパーティクルに影響を与える(動きに沿って変化を与える)オブジェクトを指定します。

f:id:Karvan:20191119215323p:plain

 

必要な設定はこれだけです。簡単。

実際に使ってみるとこんな感じ

f:id:Karvan:20191119005316g:plain

 

なお、動く地面に平らな足場ができるパターンのものはPrefabに上記のコンポーネントの他に地面を制御するコンポーネント「Particle Grid Generator」が付加されています。

 

f:id:Karvan:20191119215638p:plain

 

動く地面を作成する範囲をX,Y,ZのSize項目で指定します。
また、Particle Sizeが地面を作るパーティクルのサイズ、各X,Y,ZDistanceが各パーティクル間の距離の指定となります。


ちょっと強引ですが上のゲームシーンで使ってみるとこんな感じ

f:id:Karvan:20191119005412g:plain

 

使い方は大体わかったんですが、これを制作中のゲーム(2.5DのSTG)の何処で使用するかってのは全く考えてなくて・・・うーん、どうしよう。

 

 

 

【Unity】今更ながらLineRendererで線を引く

秋深し

ちょっとした興味本位で何も知らないアイドルのライブを観に行ったら案の定、コールもMIXもジャンプのタイミングも分からなくて一時間半近く突っ立っているだけの時間を過ごした皆さんこんばんわ。

いや、ライブ前に少しは曲を覚えようと努力はしたのですが歌詞の意味がちっとも分からなくて断念しました。ごめんなさい。

あと、最近は女の子でも女性アイドルに対してガチ恋口上?「愛してるー」とか言うんですね。その愛を十分の一でいいから私に向けてください、よろしくお願いします。

 

線を引く

Unityに手を出してから早幾年、これまで余り必要に迫られていなかったので手を出してこなかったのですが、制作中のゲーム内でLineRendererを使って線を描画する必要が出てきました。

こんな感じに

f:id:Karvan:20191112232353p:plain

 

なので今回はLineRendererを使っての線描画にチャレンジです。

 

LineRenderer

LineRendererとはUnity標準で用意されている線描画用のコンポーネントで、 2点以上の座標を指定することで各点を繋いだ線を描画します。

「2点以上の」と記載した通り直線毎ではなく、繋がってさえいれば一つのLineRendererで多点間を繋いだ線を作れます。

 

LineRendererを使って線を引く手順は以下の通り

  1. オブジェクトにLineRendererコンポーネントを追加する
  2. 線の色や太さ、テクスチャ等を設定する
  3. 線の頂点数を指定する
  4. 各頂点の座標を指定する

 

ここで1,2は事前準備の手順で線の種類(色、太さ等)別に作成し、Prefab化することで線を作成する毎に使用します

3,4が実際に線を描画する時に必要な処理となっています。

 

事前準備の手順

LineRenderer専用のオブジェクトとするために、空のオブジェクトにLineRendererコンポーネントを追加します。

 

f:id:Karvan:20191112233023p:plain

 LineRendererを追加すると上図のような設定がInspectorに表示されるので、ここで線の色や太さ等を設定します。

 

色々細かい設定がありますが、主に使用するのは

  • Width:線の太さを指定します。
  • Color:線の色を指定します。
  • Corner Vertices:線の曲がり角を丸くしたい場合に指定
  • EndCap Vertices:線の終点を丸くしたい場合に指定
  • Loop:始点と終点を繋ぐ場合にチェックをONにします

ぐらいでしょうか。

ちなみにAlignmentの項目は線描画の向きを設定しています。

  • View:線がカメラを向くように描画する
  • Transform Z:オブジェクトのZ方向に描画する

 

色とは別に線にテクスチャを適用したい場合は、Materialを作成する必要があります。

f:id:Karvan:20191112233217p:plain

今回は上のようにビームっぽいテクスチャを使用しました。

 

LineRendererの設定が完了したらオブジェクトをPrefab化しましょう。
色や太さが違う線を描画したい場合は、種類毎に上の設定をしたPrefabを準備します。

 

線を描画

線の描画はスクリプトで行います。

 LineRendererのPrefabをInstaniateで生成して、LineRendererコンポーネントを取り出します。

// Lineオブジェクトの生成
GameObject beam = Instantiate(BeamPrefab,
                    new Vector3(0, 0, 0),
                    Quaternion.identity) as GameObject;
                    
// LineRenderer取得
LineRenderer line = beam.GetComponent<LineRenderer>();

 
LineRenderer描画する線の頂点数の設定して、各点の座標を指定します。今回はInspectorで座標を指定したListから座標を指定しています。 

// 頂点数の設定
line.positionCount = PointList.Count;

// 各頂点の座標設定
for (int iCnt = 0; iCnt < PointList.Count; iCnt++)
{
    line.SetPosition(iCnt, PointList[iCnt]);
}

LineRendererに座標設定した時点で画面に描画されます。f:id:Karvan:20191112233749p:plain

 
描画されたLineRendererは当然ながらオブジェクトとしてゲーム空間に存在しているので、動かすことができます。
動かす場合はUseWorldSpaceのチェックをOFFにします。
f:id:Karvan:20191112233812g:plain   f:id:Karvan:20191112233837g:plain
 

いざ使ってみる

製作中のゲームでは自機の進行を阻むバーとして使っております。
Colliderを設定しているので自機の弾も弾く仕様です。

f:id:Karvan:20191110195717g:plain

LineRendererって意外と簡単に使えます。

 

 

【Unity】TextMeshProでディゾルブシェーダを適用する

通常運行

夏は「花火だー、お祭りだー」の声に耳を塞ぎ、秋はハロウィンの狂乱に目を塞いでやり過ごし、やっと落ち着いたと思っていたら、駅前に大きなクリスマスツリーのイルミネーションが準備されているのを目にしてウンザリした皆さんこんにちは。

秋風が独り身には冷たい季節になってきたので、この三連休は部屋に閉じこもって「The Outer World」ばかりをしていました。

宇宙を舞台にしたFalloutみたいなゲームなんですが、敵を倒すには銃で撃つより鈍器で殴った方が早い、という謎仕様に戸惑いながら異世界の荒野を彷徨っています。当然ながらゲーム開発の進捗なんてない。どうしよう。

 

GitHubとUnity

さて、「GitHub For Unity」が正式版でリリースされたこともあってか、現在GitHubではUnity製のWebGLゲームや作業効率を向上されるプラグインが数多く公開されています。

 

私も度々お世話になっており、つい最近の記事でもGitHubで公開されていて私のゲームでも使用したプラグインについて取り上げたのですが、今回紹介するプラグインもそれらと同様にGitHubから導入することができます。

 

github.com

「DissolveEffectForTMPro」ではTextMeshPro使用できるディゾルブシェーダが公開されています。

f:id:Karvan:20191104232756g:plain

 

使い方

上記のリンクから「Releases」タブを選択、最新版のunitypackageファイルをダウンロードします。

 

次にAseets⇒Import Package⇒Custom Packageからダウンロードしたunitypackageファイルを選ぶことでUnityプロジェクトに導入されます。

 

ディゾルブシェーダを適用させたいTextMeshProオブジェクトのShaderを「Distane Field(UIDissolve)」に変更し、「Dissolve」欄にディゾルブパターンのTextureを指定しますが、ここでは白黒画像でアルファチャンネルの画像を指定します。

 

shaderの設定

f:id:Karvan:20191105232609p:plain

 

ディゾルブパターンに使用するTextureの設定

f:id:Karvan:20191105232642p:plain

 

最後にディゾルブを動作させるスクリプト「UIDissolve」をアタッチします。

f:id:Karvan:20191105232706p:plain

ディゾルブの縁の色を変えたい場合は「Color」を、ディゾルブパターンのTextureの適用範囲を変えたい場合は「EffectArea」の項目を変更します。

 

ディゾルブの効果の強さを示す「EffectFactor」の値を変化させるとディゾルブの動作を確認できます。

 

スクリプトでUIDissolveクラスのPlayメソッドをコールすると「Duration」で設定した時間で先程の「EffectFactor」の値が0⇒1へ変化し、TextMeshProの文字がディゾルブパターンに沿って消されていきます。

 

試しにステージ冒頭、攻撃目標を説明する演出に使ってみました。
こんな感じ

f:id:Karvan:20191104232641g:plain

サンプリングの関係でぎこちない消え方ですが、実際はスムーズに動作します。
ディゾルブパターンのデザインに凝ればもうちょっとカッコよくなりそう・・・

◇プライバシーポリシー

●個人情報の利用目的

当ブログでは、メールでのお問い合わせ、メールマガジンへの登録などの際に、名前(ハンドルネーム)、メールアドレス等の個人情報をご登録いただく場合がございます。

これらの個人情報は質問に対する回答や必要な情報を電子メールなどをでご連絡する場合に利用させていただくものであり、個人情報をご提供いただく際の目的以外では利用いたしません。

●個人情報の第三者への開示

当サイトでは、個人情報は適切に管理し、以下に該当する場合を除いて第三者に開示することはありません。

・本人のご了解がある場合
・法令等への協力のため、開示が必要となる場合

個人情報の開示、訂正、追加、削除、利用停止
ご本人からの個人データの開示、訂正、追加、削除、利用停止のご希望の場合には、ご本人であることを確認させていただいた上、速やかに対応させていただきます。

アクセス解析ツールについて

当サイトでは、Googleによるアクセス解析ツール「Googleアナリティクス」を利用しています。

このGoogleアナリティクスはトラフィックデータの収集のためにCookieを使用しています。このトラフィックデータは匿名で収集されており、個人を特定するものではありません。
この機能はCookieを無効にすることで収集を拒否することが出来ますので、お使いのブラウザの設定をご確認ください。

●免責事項

当サイトからリンクやバナーなどによって他のサイトに移動された場合、移動先サイトで提供される情報、サービス等について一切の責任を負いません。

当サイトのコンテンツ・情報につきまして、可能な限り正確な情報を掲載するよう努めておりますが、誤情報が入り込んだり、情報が古くなっていることもございます。

当サイトに掲載された内容によって生じた損害等の一切の責任を負いかねますのでご了承ください。

●プライバシーポリシーの変更について

当サイトは、個人情報に関して適用される日本の法令を遵守するとともに、本ポリシーの内容を適宜見直しその改善に努めます。

修正された最新のプライバシーポリシーは常に本ページにて開示されます。