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

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

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

C#はマルチパラダイムプログラミング言語の1つで、命令形・宣言型・関数型・ジェネリック型・コンポーネント指向・オブジェクティブ指向のプログラミング開発すべてに対応しています。

Unity

Unityは、Unity Technologiesが開発・販売している、IDEを内蔵するゲームエンジンです。主にC#を用いたプログラミングでコンテンツの開発が可能です。

Q&A

0回答

1467閲覧

Unity グラフィックの挙動がおかしい

ssssggg

総合スコア40

C#

C#はマルチパラダイムプログラミング言語の1つで、命令形・宣言型・関数型・ジェネリック型・コンポーネント指向・オブジェクティブ指向のプログラミング開発すべてに対応しています。

Unity

Unityは、Unity Technologiesが開発・販売している、IDEを内蔵するゲームエンジンです。主にC#を用いたプログラミングでコンテンツの開発が可能です。

0グッド

0クリップ

投稿2019/12/09 12:47

編集2019/12/09 13:16

Unityについての質問です。
人型のオブジェクトのグラフィックの挙動がおかしいのですが、どうすれば直るのでしょうか。

具体的にいうと、このオブジェクトのグラフィックは Spriterendererを動的に変更することとAnimationのふた通りで変えているのですが、前者がうまくいきません。おそらく、その理由はアニメーションが常時発動して邪魔をしているためと思われますが、Animationspeedを0にしても、Animationが優先されてしまい、またAnimationのExitを使用しても再びAnimationがEntryから始まってしまうので、常時アニメーションで上書きされてしまいます。
どうすればいいですか?

using System.Collections; using System.Collections.Generic; using UnityEngine; using UnityEngine.SceneManagement; public class PlayerS : MonoBehaviour { SpriteRenderer SPRE; public Sprite PDOWN; public Sprite PRIGHT; public Sprite PUP; public int[] EventsS = new int[10] { 0, 0, 0, 0, 0, 00, 0, 0, 00, 0, }; AudioSource[] sounds; Animator animator; MapManager MMS; public GameObject MapManagerR; public GameObject Gary; Doctor GaryS; public int FieldNUM; public bool EnCount; public bool BattleS; public bool S;//歩けるか public GameObject Chat; string T; string C; bool AS = false; public float movespeed; // Start is called before the first frame update void Start() { SPRE = gameObject.GetComponent<SpriteRenderer>(); SPRE.sprite = PDOWN; Debug.Log(SPRE.sprite); GaryS = Gary.GetComponent<Doctor>(); EventsS = new int[] { 0, 0, 0 }; this.animator = GetComponent<Animator>(); MMS = MapManagerR.GetComponent<MapManager>(); transform.position = new Vector2(-26.5f, 41); sounds = GetComponents<AudioSource>(); if (EventsS[0] == 1) { Gary.SetActive(false); } else { GaryS.Down(); } } void FixedUpdate() //void Update() { //if (Input.GetKeyDown(KeyCode.R)) //{ // //transform.position = new Vector2(320, -77); // EnCount = true; //} transform.rotation = Quaternion.Euler(0, 0, 0); if (S == false) { if ((Input.GetKey(KeyCode.LeftShift))|| (Input.GetKey(KeyCode.RightShift))) { movespeed = 0.2f; } else { movespeed = 0.15f; } if (BattleS == true && EnCount == true && FieldNUM != 0) { Battle(); } if (Input.GetKey(KeyCode.UpArrow) || (Input.GetKey(KeyCode.DownArrow) || (Input.GetKey(KeyCode.RightArrow) || (Input.GetKey(KeyCode.LeftArrow) || ((Input.GetKey(KeyCode.W) || (Input.GetKey(KeyCode.A) || (Input.GetKey(KeyCode.S) || (Input.GetKey(KeyCode.D)))))))))) { if (AS== false) { this.animator.speed = (movespeed / 0.1f); } else { this.animator.speed = 0; } } else { movespeed = 0; this.animator.speed = 0; } //if (BattleS == true && EnCount == true && FieldNUM != 0) //{ // Battle(); //} } else { movespeed = 0; this.animator.speed = 0; }

このコードでGameを実行すると、voidStartでSPRE.spriteをPDOWNに切り替えようとしているのですが、切り替わらずに、InspectorのspriterendererにはNoneが表示されます。
その時のアニメーターは、Entryの次のplayerに設定されていて、速度は0になっていました。

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

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

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

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

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

y_waiwai

2019/12/09 13:04

コードも提示してない、グラフィックも提示しないではどーしよーもありませんが
ssssggg

2019/12/09 13:08

すみませんとりあえずコードは追加しておきます。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

まだ回答がついていません

会員登録して回答してみよう

アカウントをお持ちの方は

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

ただいまの回答率
85.47%

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

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

質問する

関連した質問