【Unity】Texture2DをEncodeToJPGしてmBaaSに無事に送る方法
こんにちは。VyseArtプログラム担当のトナカイです。
今回はタイトルの件ではまってしまい、無事に脱出できたのでメモとして残しておきます。
現在、アンドロイド端末のギャラリーから画像を取得して、その画像をmBaaSに無事に送信するというコードを作っています。
そこで躓くのが、(無料のプラグインで)(ギャラリーから)取得したTexture2D型のテクスチャ(画像イメージ)をmBaaSに送るときにどうしても送れないという状況でした。
原因ですが、ギャラリーから取得した画像が、読み書き不可(isReadable=false)とういのがデフォルトで決まっているためです。
そのため、EncodeToJPGやそのあとのmBaaSに送信するコードがうまく通らず、0バイトの画像がmBaaSにたびたび送られました。
UnityエディタのImportSettingsで(AdvancedのReadandWrite)に手動でチェックを入れれば、画像テクスチャは無事(EncodeToJpgなどできてバイト配列にし)mBaaSに送れるのですが、Androidのギャラリーから取得したテクスチャはスクリプト上のものなので、Unityエディタ上の読み書き設定を変更することがどうしてもできませんでした。
解決方法は、下記のサイトからできました。
https://stackoverflow.com/questions/44733841/how-to-make-texture2d-readable-via-script
このサイトの下部にあるメソッドを使い、要は取得したテクスチャをTexture2D型で新たに生成して、その際にisReadableをTrueに設定して生成をしました。
すると、無事コードの続きEncodeToJPGができ、それをmBaaSに送信するコードも通り、目的を達成することができました。
以上です。
トナカイ
3Dのプレイヤーをバーチャルパッドを出現させタップ&ドラッグで移動させる、そして、カメラがそれに追従して回り込む
こんばんわ。VyseArt(ヴィシェアート)のプログラム担当のトナカイです。
余談プラス手短にタイトルの件を紹介します。
まず余談から、「脱出ゲーム 御筆るいの都内某所しっそう記3」を出してから(上記)、次のゲーム制作に取り掛かっています。
次のゲームは、ノベルとシューティングミニゲームが合わさったゲームで、ノベルは創作ではなく原作があります(原作は著作権大丈夫のもの。配信時発表します)。
創作のノベルは世に溢れていて、レベルが高いものもありますし、私の構成力では台頭は難しいかなと思います。一方で、原作があるノベルの二次創作は長期的に人の目に触れる可能性があるかなと。
その原作に選んだノベルが、ライトノベルではなくて昔の小説なのでライバルも少ないんですよね。
ほんとうはゲーム要素(シューティングミニゲ)なしでもいいくらいの良い題材だと思っています。
余談は以上です。タイトルの件。
半年くらい前から、「バーチャルパッドを使って3Dのプレイヤーをスマホで動かしたい」と思っていました。ネットや書籍を買って実装しようとするのですが、パッドが出現しなかったり、出現してもカメラが希望通り追尾しなかったりとうまくいきませんでした。
本日、kanさんのサイトより、実装成功したのでメモをしておきます。
このサイト通りに実装すると、サイトのタイトルの通り、タッチしたところからドラッグした分だけプレイヤーが動きます。
しかし、私はこの先、カメラが追従するようにしたかったのです。プレイヤーがJoystickに合わせて動き、カメラがそれに追従して回り込むようにするには、、
こちらのサイトを参考にしました。
何千円も何万円もかけてUnityの技術本を購入したりもしましたが、そちらよりも無料のサイトの情報のほうが現在役に立っている次第です。
Kanさんのコードに少し加えて、Teck.pjinさんのサイトをKanさんのJoystickの変数を使って記述しなおすと、
かわいいカモメが動きます^^
本日は以上です。
コード詳細を載せようか迷ったのですが、解説もしなくてはいけないので載せないことにしました(笑)
トナカイ
Unityでアンドロイドのアプリを実機に落とせずにはまった話
こんばんは。VyseArtのトナカイです。
タイトルの話、手短にメモします。
3月31日 新作ゲームアプリ「御筆るいの都内某所しっそう記3」が完成、配布。
同日 広告を実装すると、「(アプリ名)が繰り返し停止しています」と実機(テスト用)に現れ、落ちる。ストアでの配布を停止。原因を探す。
4月3日 丸三日かかり問題を解決できた。
原因はAndoroidManifest.xmlにあった。
こちらのサイトを参考に、アドモブ広告のAndoroidManifest.xmlに自分のアプリのIDを記述するとビルドが通り、実機テストでも落ちなかった。
ポイントは、昨年から、アドモブのAndoroidManifest.xmlには、自分のアプリのIDを記述することが必要になったみたい。
以上。新ゲーム配信したので、ぜひ皆さんプレイしてみてください♪
トナカイ
御筆るいの都内某所しっそう記3 プライバシーポリシー
プライバシーポリシー
(個人情報保護方針)
私たちは、個人の重要性を認識し、その保護の徹底をはかるため、このプライバシーポリシーを公開し、ユーザーのプライバシー保護に最大限の注意を払うことをお約束いたします。
1.個人情報の取得
御筆るいの都内某所しっそう記3(以下、当アプリ)は、広告表示のために通信を行いますが、個人の特定に使用するものではありません。
2.個人情報の第三者提供について
私たちは、お客様の個人情報を、第三者に開示、提供いたしません。
3.個人情報の管理について
当アプリは、ユーザー様の個人情報を特定することはありませんが、アプリのダウンロード、使用に関しましては自己責任でお願いいたします。
4.広告の配信について
当アプリは第三者配信の広告サービス「Google AdMob グーグルアドモブ」を利用しています。
5.免責事項
当サイト、当アプリで掲載している画像の著作権は各権利所有者様に帰属いたします。
権利を侵害する目的はございません。アプリの内容や使用画像等に問題がございましたら、各権利所有者様本人が直接メールでご連絡下さい。確認後、ご対応させていただきます。
当サイト、当アプリからリンクやバナーなどによって他のサイトに移動された場合、異動先サイトで提供される情報、サービス等についての一切の責任を負いません。
当アプリの使用によって生じた損害等の一切の責任を負いかねますのでご了承ください。
以上。
映画「女王陛下のお気に入り」を観ました♪
こんにちは。雑記として映画の感想をアップします♪
「女王陛下のお気に入り」
第91回アカデミー賞9部門10ノミネートで注目の作品、ということで観てきました^^
まだ観ていない方、ネタバレ注意です!
あらすじなどは他サイトをご参照ください。
==================================================================
考察
●アビゲイルの変化
宮中の召使となったアビゲイル。ある出来事から、女王の側近であるサラに見初められ、サラの侍女となります。ある日、アビゲイルは女王とサラの重大な秘密を知ってしまいますが、敵対している人間にそそのかされても、口を割るようなことはしませんでした。アビゲイルはサラとカモの打ち合いをしていた時に、「秘密を知っても、私の誇りを捨てるようなことはしません」とサラに宣言します。そんなアビゲイルに、サラは空砲を打ちます。そして、厳しい顔をしてアビゲイルに忠告します。予想外のサラの反応に、忠誠心を砕かれてしまったアビゲイル。この出来事は、アビゲイルの変化の引き金になってしまったのではないかと思います。そして、二人の対立が決定的となってしまったのが、アビゲイルが女王に気に入られ、サラの怒りを買ってしまったこと。アビゲイルは闘争心をむき出しにし、サラを貶める手段を厭わず、野心に支配された魔物となります。
●女王陛下の一番のお気に入りはウサギ
女王がアビゲイルを気に入るきっかけとなったのが、女王が飼っているウサギに興味を示したことでした。アビゲイルは「可愛い」と言って一匹のウサギを抱きしめます。ウサギも懐いているようでした。そんな様子を見て女王は、徐々にアビゲイルに心を寄せます。しかし、後に変わり果てたアビゲイルは、女王の寝ている間に、靴を履いたままウサギを足置きにするような行動をします。ふと目を覚ました女王は、その様子を見てしまいます。そして、アビゲイルにすごい権幕で命令をします。「口を開くことも、私の命令がなければならない」と。そのような不穏なラストシーンは、アビゲイルの不安な未来をも予感させます。女王の一番の拠り所であったのは、サラでもアビゲイルでもなく、自分の子に重ねたウサギ達だと思います。良心を失い、保身に走り、権力や財産に目がくらんでしまったアビゲイルは、未来の宿敵に立場を脅かされてもおかしくはないです。自分がそうしてきたように。
感想
●インパクトのあるクラシック音楽
所々、大きな音量でクラシックが流れます。ストーリーに入り込めない序盤でも、音楽を聴いているだけで楽しめました。
●見ごたえのある宮中ドレス
ドレスは観る前から楽しみの一つとしていました。
==================================================================
以上、映画鑑賞の感想なども、時々発信していければと思います^^
ではまた♪
オンラインゲームを作りたい2
こんばんは。VyseArt(ヴィシェアート)のプログラム担当トナカイです。
Unityゲームジャムが終了しましたね。私達もゲームを作って参加して、2日~数日間でこしらえた割には、個人的にはよい評価をもらえたと思っています。
今はPhotonのオンラインゲームを作る学習をしています。
その学習で圧倒的に役に立ったサイトがあります。うら干物書きさんのサイトです。
大変勉強になりました。本当にありがとうございます。
このサイトの#01~#05まで学習して、Photonのネットワーク接続からロビー入室、ルーム作成、入室まで進むことができました。
Photonを知りたければまずこのサイトを読むこと、わからなければ写経することもいいと思います(私は#05まで自分なりに写経しました)。
そして、私がやりたかったことは、まず『ルームに入室するまでにプレイヤーごとにタグをつけて役割を分けること』でした。
そもそもは(このブログでは)チャットゲームを作りたくて、話し手と聞き手、その他のオーディエンスという風に作りたいのですが、Photonで何をどうしたらいいかわかりませんでした。
それを、うら干物書きさんのサイトを読んで、オンラインの接続の仕方、ルームの作り方などを理解して、その後自分なりにルームを作成してみました。
ボタンを押すと、話し手と聞き手、その他オーディエンスという風にタグ付けされて次のシーンへ進みます。
できました!
ここで時間がかかった点は、『自身のプレイヤーと他人のプレイヤーを(タグ付けするため)特定して、タグをつけていくこと。』
この自身のプレイヤーに関してですが、
photonView.GetComponent<PhotonPlayer>().IsMasterClient
とGetComponentをやりがちなのですが、インターフェースを実装したものをGetComponentしていますと(怒られる)ので、違う方法で取得します。
Photonにおける自身のプレイヤーの取得方法は
PhotonNetwork.playerを用います。
また、他人のプレイヤーを特定する方法ですが、
foreach (PhotonPlayer p in PhotonNetwork.playerList)
などとして、PhotonNetwork.playerListで取得することができます。
そして、タグをつけていくこと、に関しては、
SetCustomPropertiesという、カスタムプロパティというものを使えばよいです。
JSでの書き方はこちら、
このようにして、部屋の入り方と、タグのつけ方を学んだ次第です。
Photonのドキュメントなども読むと、これからいろいろとできそうだなと思いました。
次回は、これからチャットゲームを作り進めていって、チュートリアルみたいなものを作りたいです。
また、現在「御筆るいの都内某所しっそう記3」という続き物のゲームを製作中でして、そちらの制作が優先されるかもしれません。
トナカイ
UnityのPhotonの勉強メモ~オンラインゲームを作りたい~
題名の通り、オンラインゲームが作りたいVyseArtのトナカイです。
どんなオンラインゲームかというと、ネタバレすると(技術が追い付かず)こちらが楽しくないので、ざっくりと、ゲーム要素のあるチャットのようなものを作りたいわけです。
そこで、Photonをこれから何回に分けて勉強していきます。
Photonでオンラインゲームを作るには
Unityには猫本というものがありまして、北村愛実さんの「Unityの教科書」です。その猫本の非オンラインのゲームをオンライン化してみたというサイトがあります。それを学習しました。
そのサイトはこちら です。
学んだこと
(PhotonのセットアップやUnityへインポートができた後のお話です。)
●オンライン化したいオブジェクトに、スクリプト「PhotonView」をアタッチする(これは必須)
●オンライン(して操作)するオブジェクトはプレファブ化する(これは普通に考えてそうですよね)(追記:JoinedLobbyなどロビーの概念があるとその後のプレファブのInstantiateが必要だと考えて、普通に考えてと書きました。)
●Instantiate生成するプレファブはAssetフォルダ直下のResourcesフォルダに置くこと(必須)
●オンライン化したオブジェクト(自分のものは自分で)操作するには、スクリプトの内容に『if(photonView.isMine){ }』という形式で記述すること
以上が必要だということが分かりました。
======
学習
トナカイ(私個人)の学習では、二つのデバイス(アンドロイド実機とUnityエディタ)に、それぞれ二つのPlayerを表示させることができた。ただし、片方のデバイスで動かしても、もう片方にその動きが反映されなかった。
そこら辺の解説をしたサイトでとても分かりやすいものがあったので掲載します。
わかった限りで要約すると、PhotonViewをオブジェクトにつけるだけではなくて、動きを同期させる必要と、手順があること(PhotonViewのObservedComponentsにTransformをアタッチする)。ただし、自分のTransformを当該箇所にアタッチすると、かくかくとした動きになってしまう。
上記の問題を解消するために、PhotonTransformViewというコンポーネントが登場する。これを上記の当該箇所にアタッチすると、滑らかな動きで同期されるということだった。
この記事のまとめ
こんなレベルでブログを書いていくのですが、一歩一歩進んでいくために書きます。
Photonでオンラインゲームを作るには…
PhotonViewをアタッチする(必須)
オンライン化するオブジェクトをプレファブ化する
そのプレファブは、Assetフォルダ直下のResourcesフォルダに入れること
そして
自分のオブジェクトを操作するには、isMineプロパティを使い、記述する
デバイス間の動機にはPhotonTransformViewコンポーネント利用が良い。(Transformだとカクカク)
以上です。
今後のPhotonの学習は、私のチーム(VyseArt)がチャットぽいオンラインゲームを作ろうかという話だったので(もっといろいろあるのですが)Photonのチュートリアルサイトを見て知識を深めるとともに、上記の知識で、案に出たチャットゲームっぽく作るにはどの知識を使えばよいかを予想を立てて考察していくことになります。
(ちなみにPhotonのチャット機能は使わないつもりです)
必要なもの(とキーワード)は、吹き出しが出てきて(Instantiate、IsMine、PhotonView)、ルームマスターともう一人役割があって(以後学習。OnJoinedLobbyから)、途中参加もできて(購入した書籍を参考に、ググる)、吹き出しが上にちょっとずつ移動していく感じ(これも購入した書籍を参考)
というような知識が必要だと思いました。
トナカイ