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

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

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

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

Q&A

1回答

3430閲覧

Unitynでボタンを押してる間画像を切り替えたい

NATUKIFGL

総合スコア12

C#

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

0グッド

0クリップ

投稿2017/05/01 08:12

編集2017/05/01 14:32

Unityにて、ボタンを押してる間キャラの画像を切り替える
というものを作りたいんですがうまくいきません
コードはこのように書いてありました。
using System.Collections;
using System.Collections.Generic;
using UnityEngine;

public class player : MonoBehaviour {
[SerializeField]
float speed;
//移動ベクトル

public GameObject hensin;
Vector3 velocity;

// Use this for initialization

IEnumerator Start()
{
while (true)
{
if (Input.GetKey(KeyCode.SpaceArrow))
{

Instantiate(hensin, transform.position, transfrom.rotation);
}
}
}

// Update is called once per frame
void Update() {
Run();
}

//ベクトル向き初期化
void Run()

{
velocity = Vector3.zero;

//キー入力によりベクトルを加算
//左右移動
if(Input.GetKey(KeyCode.RightArrow))
{
velocity.x += -speed;
}
if(Input.GetKey(KeyCode.LeftArrow))
{
velocity.x += speed;
}
if(Input.GetKey(KeyCode.UpArrow))
{
velocity.y += -speed;

}
if(Input.GetKey(KeyCode.DownArrow))
{
velocity.y += speed;
}

transform.position -= velocity;
}

}
参考にしているソースです
using UnityEngine;
using System.Collections;
public class Player : MonoBehaviour {
// 移動スピード
public float speed = 5;

// PlayerBulletプレハブ public GameObject bullet; // Startメソッドをコルーチンとして呼び出す IEnumerator Start () { while (true) { // 弾をプレイヤーと同じ位置/角度で作成 Instantiate (bullet, transform.position, transform.rotation); // 0.05秒待つ yield return new WaitForSeconds (0.05f); } }

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

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

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

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

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

guest

回答1

0

if (Input.GetKey(KeyCode.SpaceArrow)) ではなく
if (Input.GetKey(KeyCode.Space))ではないですか?(SpaceArrowでも動作したかもしれないけど)

あとwhile (true) について、何がtrueだったら実行されるのか書かれてないように見受けられるんですが……

05/08追記

こちらに書いてあることを実行して見てください。

投稿2017/05/01 08:40

編集2017/05/08 01:02
Ruthi

総合スコア65

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

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

Ruthi

2017/05/01 08:58

While(true)って無限ループ化することを失念してました、失礼しました。
NATUKIFGL

2017/05/01 14:19

ここのArrowはいらないのですか?
Ruthi

2017/05/02 00:26 編集

Arrowは矢印の意味なので、上下左右のカーソルキーでしか使わなかったと思います。違ったとしてもKeyCode.Spaceだけでも動くはずです。 できたら質問文のスクリプトを編集していただけないでしょうか? 少々見づらくて…
Ruthi

2017/05/02 00:33

あと、質問文のスクリプトを実行したらどうなるかも記してください。 コンパイルエラーが発生した(その場合どの行からエラーが発生しているかも)、スペースキーを押しても変身しない、スペースキーを離しても元の姿に戻らないなど、上手くいかないということは何らかの結果が出てるんですよね?
NATUKIFGL

2017/05/02 01:38

お手数をおかけして申し訳ございません。 エラーはスペースキーを押しても変身しないということです。
Ruthi

2017/05/02 01:58

SpaceArrowをSpaceに変更してもダメでしょうか?
NATUKIFGL

2017/05/05 10:23

画像は、もと画像は残ったままですが、二枚目はでるようになりました。
Ruthi

2017/05/08 01:04 編集

回答にリンクを貼りました。 そこに書いてあることをあなたのやりたいことに合わせて書き換えて実行してみてください。 if (Input.GetKey(KeyCode.Space)の処理の中に画像変更の処理を書き足せば大丈夫だと思います。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

まだベストアンサーが選ばれていません

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

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

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

ただいまの回答率
85.48%

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

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

質問する

関連した質問