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

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

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

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

Q&A

解決済

1回答

2436閲覧

Unityでのスコアについて

cdecda

総合スコア11

Unity

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

0グッド

0クリップ

投稿2015/11/17 10:21

編集2015/11/17 14:23

スコアについて

Unity上でスコア機能を実装したいのですがうまく動きません。

CS1502: The best overloaded method match for `UnityEngine.Object.Destroy(UnityEngine.Object)' has some invalid argumentserror

CS1503: Argument #1' cannot convert bool' expression to type `UnityEngine.Object'

###ソースコード

C#

1public class point : MonoBehaviour { 2 public GameObject player; 3 public Text pointtext; 4 private int poin = 0; 5 6 void Start () { 7 pointtext.text = "0"; 8 } 9 10 11 void Update () { 12 if (Destroy(gameObject.tag == "en")) { 13 poin += 20; 14 pointtext.text = poin.ToString(); 15 } 16 } 17} 18

よろしくおねがいします。

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

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

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

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

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

guest

回答1

0

ベストアンサー

Destroy関数の引数にブール値を渡しているのでエラーが起きています。

C#

1if (gameObject.tag == "en") { 2 Destroy(this); 3 poin += 20; 4 pointtext.text = poin.ToString(); 5}

どういう想定なのかわかりかねるので理想の挙動にならないかもしれませんがいかがでしょうか?

投稿2015/11/18 00:58

tanamochi

総合スコア83

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

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

cdecda

2015/11/18 11:02 編集

ご返答ありがとうございます。 ゲームなのですがプレイヤーキャラクターに向かってくるキャラクターがいます。 そのキャラクターのタグで判別してスコアがあがるということなのですが、どうでしょうか。
cdecda

2015/11/18 13:44 編集

任意の関数がよばれたときにスコアが変わるようにしたいのですが、Triggerでできるのでしょうか。
tanamochi

2015/11/18 14:45 編集

あ、すみません これpointクラスでしたね でしたら pointクラスはポイントを増やすだけにして別のとこからその関数を呼ぶ形がいいと思います。 // ポイントクラス public class point : MonoBehaviour { public GameObject player; public Text pointtext; private int poin = 0; void Start () { pointtext.text = "0"; } public void AddPoint (int iPoint) { poin += iPoint; pointtext.text = poin.ToString(); } } // プレイヤークラス public class player : MonoBehaviour { public point pointComponent; void Start () { } private void OnTriggerEnter(Collider other) { if (other.tag == "en") { Destroy(other); pointComponent.AddPoint(20); } } } enタグを持ったオブジェクトが生成された時に削除してポイントを増やす(当初の処理が再現できた場合の挙動)だとユーザー的に何が起きたかわからないので 以下の処理にしてます。 1.enタグオブジェクトが生成される 2.enタグオブジェクトがプレイヤーに向かう 3.enタグオブジェクトがプレイヤーに接触 4.enタグオブジェクトを削除 5.ポイントを加算 実行はしてないのでタイポなどで動かないかもしれませんがどうでしょうか?
cdecda

2015/11/19 10:25

エラーが発生してしまいました。 error CS1061: Type `point' does not contain a definition for `AddPoint' and no extension method `AddPoint' of type `point' could be found (are you missing a using directive or an assembly reference?) これはAddPointがうまく認識されてないのでしょうか。
tanamochi

2015/11/19 11:36

こちらでは動きましたよー ちゃんとクラスが2つ(pointクラスのファイルとplayerクラスのファイル)作成されているか、 アタッチして参照できるようになっているかを確認してみてください。 pointクラスにplayer変数があるのでわかると思いたいのですが pointクラスがアタッチされたオブジェクトをplayerクラスがアタッチされたオブジェクトの pointComponent の部分にドラッグです。
cdecda

2015/11/19 12:38

失礼しました。 pointクラスの方を編集したときに更新していませんでした。 これはプレイヤー以外にも適用かのうでしょうか。
tanamochi

2015/11/19 12:50

同じようにpointクラスの参照を持っていれば関数を呼び出して使えますよ! 別にクラスを作って呼んでみてください
cdecda

2015/11/19 13:30

ありがとうございます。 できました。 いろいろとありがとうございました。
tanamochi

2015/11/19 13:48

やったー おめでとうございます!
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.51%

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

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

質問する

関連した質問