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

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

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

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

Unity

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

Q&A

2回答

2296閲覧

unity クリック処理 イベント

user1041

総合スコア27

C#

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

Unity

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

0グッド

0クリップ

投稿2015/07/05 10:16

編集2022/01/12 10:55

下記の状態でwhileの中にif文でgetmousebuttondownの処理を行うにはどうすればいいでしょうか? ちなみにif(Input.GetMouseButtonDown(0));と書いたらコンパイルはできたが、何も
変わらなかったです。

処理内容・クリックを1カウントしたらDeathMAXHP -= DeathReceivedamage;が実行される というものです。

追記

public class VS : MonoBehaviour {

public AudioSource audiosource; public AudioSource audiosource2; private DragonStatus status; private DeathStatus status2; private DragonStatus DragonMAXHP; private DragonStatus DragonReceivedamage; private DeathStatus DeathReceivedamage; private DeathStatus DeathMAXHP; private DragonStatus DragonleftHP; private DeathStatus DeathleftHP; public AudioClip audioclip; public AudioClip audioclip2; void Start () { audiosource = gameObject.GetComponent<AudioSource> (); audiosource.clip = audioclip; audiosource.Play (); status = GetComponent<DragonStatus> (); status2 = GetComponent<DeathStatus> (); int DragonMAXHP = status.HP; int DeathMAXHP = status2.HP; int DragonReceivedamage = status2.attack - status.defend; int DeathReceivedamage = status.attack - status2.defend; int DragonleftHP = DragonMAXHP -= DragonReceivedamage; int DeathleftHP = DeathMAXHP -= DeathReceivedamage; }

void Update(){

Debug.Log (DragonMAXHP); if(Input.GetMouseButtonDown(0)) { DragonMAXHP -= DragonReceivedamage; Debug.Log (DeathMAXHP); } audio.PlayOneShot(audioclip); if(Input.GetMouseButtonDown(0)) { DeathMAXHP -= DeathReceivedamage; audio.PlayOneShot(audioclip2); } if(DragonMAXHP < 0 || DeathMAXHP < 0) { // DragonMAXHPまたはDeathMAXHPのどちらかが0になった時の処理 } }

}

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

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

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

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

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

guest

回答2

0

毎フレーム、左ボタンが押されたらダメージを与えるということでしたら以下のような感じですかね。

lang

1Update(){ 2 3 Debug.Log (DragonMAXHP); 4 if(Input.GetMouseButtonDown(0)) 5 { 6 DragonMAXHP -= DragonReceivedamage; 7 Debug.Log (DeathMAXHP); 8 } 9 10 audio.PlayOneShot(audioclip); 11 if(Input.GetMouseButtonDown(0)) 12 { 13 DeathMAXHP -= DeathReceivedamage; 14 audio.PlayOneShot(audioclip2); 15 } 16 17 if(DragonMAXHP < 0 || DeathMAXHP < 0) 18 { 19 // DragonMAXHPまたはDeathMAXHPのどちらかが0になった時の処理 20 } 21 22}

それとも1回のUpdate(最初の1フレーム目)でHPが0になるまでダメージを与え続けたいということですか?

追記
サンプルだけは示しますが、プログラムを書く上で自分で調べることがとても大事です。
「○○はどうやりますか。」という質問ではなく、「○○をこれだけ調べてみたのですが、△△のところがどうしてもわかりません。□□であっていますか?」というような質問ができるように心がけるといいですよ。

lang

1using UnityEngine; 2using System.Collections; 3//オーディオ再生 4public class VS : MonoBehaviour { 5 6 7 public AudioSource audiosource; 8 public AudioSource audiosource2; 9 10 private DragonStatus status; 11 private DeathStatus status2; 12 13 public AudioClip audioclip; 14 public AudioClip audioclip2; 15 16 17 // 以下をメンバ変数として宣言 18 int DragonMAXHP = 0; 19 int DeathMAXHP = 0; 20 21 int DragonReceivedamage = 0; 22 int DeathReceivedamage = 0; 23 24 int DragonleftHP = 0; 25 int DeathleftHP = 0; 26 27 28 void Start () { 29 audiosource = gameObject.GetComponent<AudioSource> (); 30 audiosource.clip = audioclip; 31 audiosource.Play (); 32 33 34 status = GetComponent<DragonStatus> (); 35 status2 = GetComponent<DeathStatus> (); 36 37 DragonMAXHP = status.HP; 38 DeathMAXHP = status2.HP; 39 40 DragonReceivedamage = status2.attack - status.defend; 41 DeathReceivedamage = status.attack - status2.defend; 42 43 44 DragonleftHP = DragonMAXHP -= DragonReceivedamage; 45 DeathleftHP = DeathMAXHP -= DeathReceivedamage; 46 } 47 48 49 50 void Update(){ 51 52 // なんかifの中身が違う気がしたので直しました。 53 // おせっかいでしたら戻してください。 54 Debug.Log (DragonMAXHP); 55 if(Input.GetMouseButtonDown(0)) 56 { 57 DragonMAXHP -= DragonReceivedamage; 58 } 59 Debug.Log (DeathMAXHP); 60 61 audio.PlayOneShot(audioclip); 62 if(Input.GetMouseButtonDown(0)) 63 { 64 DeathMAXHP -= DeathReceivedamage; 65 } 66 audio.PlayOneShot(audioclip2); 67 68 if(DragonMAXHP < 0 || DeathMAXHP < 0) 69 { 70 // DragonMAXHPまたはDeathMAXHPのどちらかが0になった時の処理 71 } 72 73 } 74}

投稿2015/07/05 14:43

編集2015/07/06 07:52
wakuwaku

総合スコア386

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

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

user1041

2015/07/06 03:06

上記でコンパイルしたらエラーがでます。。
wakuwaku

2015/07/06 03:48

エラーの内容はどのようなものですか?
user1041

2015/07/06 04:20

>>毎フレーム、左ボタンが押されたらダメージを与えるということでしたら以下のような感じですかね。 そのとおりです。
user1041

2015/07/06 04:35 編集

VS.cs(39,7): error CS0116: A namespace can only contain types and namespace declarations がでます。。。。
wakuwaku

2015/07/06 04:30

クラスの外に書いていないですか?
user1041

2015/07/06 04:37 編集

追記しました。上記でエラーがでました。
wakuwaku

2015/07/06 04:53

public class VS : MonoBehaviour { } の中にUpdateを入れてください。
user1041

2015/07/06 05:08

こういうことですか?  これもエラーがでてint ○○○ のところがerror CS0103: The name `DragonMAXHP' does not exist in the current context になります
wakuwaku

2015/07/06 05:22

はい。その通りです。 DragonMAXHP DeathMAXHP DragonReceivedamage DeathReceivedamage DragonleftHP DeathleftHP をStatusと同様にメンバ変数としてください。 こちらは「変数のスコープ」について調べてみてください。
user1041

2015/07/06 07:43 編集

追記しました。上記で実行すると error CS0019: Operator `-=' cannot be applied to operands of type `DragonStatus' and `DragonStatus' となります。。。。
wakuwaku

2015/07/06 08:07

伝え方が悪かったですね。すみません。 型はintのままで、Statusと同じ要領で private 型 変数名; と宣言してくださいという意味でした。
user1041

2015/07/06 12:13

どうもありがとうございます
guest

0

if文は以下のように使用します。基本的な文法です。

lang

1if(条件) 2{ 3 // 条件が真の時実行する処理 4}

まずは基礎的な文法(if,else,for,foreach,while,switch等々)を確認したほうがいいかもしれませんね。

lang

1if(Input.GetMouseButtonDown(0)) 2{ 3 DragonMAXHP -= DragonReceivedamage; 4 Debug.Log (DeathMAXHP); 5}

投稿2015/07/05 11:47

wakuwaku

総合スコア386

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

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

user1041

2015/07/05 14:12

具体的には (DragonMAXHP>=0 && DeathMAXHP>=0) でHPが0になるまで動作を 続けたいのでwhileにしてるのですが、その中にifをいれる方法はどうすればいいですか?
wakuwaku

2015/07/05 14:44

回答を編集して追記したつもりが新しく回答を付けてしました。 そちらを見てください。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

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

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

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

ただいまの回答率
85.50%

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

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

質問する

関連した質問