質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.48%

Q&A

解決済

2回答

458閲覧

Unity2D 分割されたSprite画像の切り替えについて

tawati

総合スコア74

0グッド

0クリップ

投稿2020/10/14 23:28

2Dキャラクターの移動についてなのですが、

例えば、キャラクターを時計回りに右回転させたい場合、
向きに応じてSprite画像を切替えるのが適切なのでしょうか?

その場合なのですが、
画像のように、一つのSpriteが分割してある場合、
どうやって分割画像を取得するのでしょうか?

今現在、
PlayerというオブジェクトにPlayerという名前のSpriteコンポーネントが付いていて、
そのPlayerという名前のSpriteはPlayer_0~Player11までに分割されています。

このPlayerオブジェクトのSprite画像を、任意の画像(Player_0~Player11)へ切り替えたいです。

また、他にもっといい方法がございましたら、ご教授願います。

![イメージ説明]イメージ説明

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答2

0

自己解決

すべての切り替え画像をpublicな変数で用意し、
インスプクター上から設定しました。
(frontImage, backImage, rightImage, leftImage)
その後、
playerImage.sprite = backImage;
のように、切り替えたい画像を指定することで、
無事に切り替えることができました。

ご回答頂いた方には本当に感謝しております。
またどうぞよろしくお願い致します。

投稿2020/10/15 13:21

tawati

総合スコア74

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

0

向きに応じてSprite画像を切替えるのが適切なのでしょうか?

適切と言うか、2Dキャラクターである以上そうする他ありません。
(シェーダーを工夫して「2Dに見える3Dモデル」にすれば話は別ですが)

どうやって分割画像を取得するのでしょうか?

アニメーションクリップを作ってAnimatorで切り替えるか、
スクリプトで保持しておいて入力に応じて切り替えるのかのどちらかかと思います。
具体的な方法は「unity 2d アニメ」あたりで検索すると出て来ると思うので調べてください。

投稿2020/10/15 00:15

sakura_hana

総合スコア11427

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

tawati

2020/10/15 03:12

早速の回答ありがとうございます。 Animatorで切り替える方法はわかったのですが、 スクリプトで保持しておいて入力に応じて切り替える。の方法がわかりません。 以下のサイトを見つけたのですが、 コードの説明がなく、何をしているのかイマイチわかりません???? 恐らく、sprChange()内でSpriteの切り替えを行っているのだろうということはわかりました。 https://qiita.com/ELIXIR/items/5fff2a479eb3c28e507a
sakura_hana

2020/10/15 04:53

Resourcesはこの場合使う利点があまり無いのでそのサイトは無視していいです。 もっと単純に考えましょう。 「Spriteを入れる変数を用意する(例えば上下左右の4つ・インスペクタから該当するSpriteをセットしておく)→入力を取得する条件文を書く→条件に合う変数のSpriteをSpriteRendererに代入」 これで出来ます。(コマアニメしたいならSpriteの配列にして入力している間一定時間毎にSprite入れ替えとかになりますが、そこまでやるならAnimatorでいい気がします)
tawati

2020/10/15 07:07

そうなんですね。 ありがとうございます。 言われたとおりにしてみたつもりなのですが、切り替わりません。。 画像のように、playerImagesというSprite型の配列(長さ:4)を定義して、 インスペクター上から画像をそれぞれ設定しました。 そして該当の箇所で、 playerImage.sprite = playerImages[1]; のように、現在のspriteを書き換えたのですが、見た目に変化がありません。 処理の前後で、 print("playerImage.name : " + playerImage.sprite.name); として、現在のsprite名を表示させましたが、 こちらの表示では切り替わっていました。 http://get.secret.jp/pt/file/1602745313.jpg
tawati

2020/10/15 13:19

プレイヤーのオブジェクトにアニメーションコンポーネントが付いていて、 その影響でSprite画像が書き換わってました???? お騒がせいたしました。 無事にどうさいたしました。 ありがとうございました。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.48%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問