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

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

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

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

Q&A

解決済

2回答

50900閲覧

【Unity】オブジェクトが衝突したときスコアに点数を加算させたい

sileato

総合スコア18

Unity

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

0グッド

3クリップ

投稿2016/06/13 04:53

編集2016/06/13 07:41

Textで作ったスコア表示にScriptで"Score: 0"と代入して表示させるところまでできました。
このスコア表示にcubeというオブジェクトが、cube同士で衝突したときに+150
cube以外のオブジェクトと衝突したとき+100を加算させて表示していきたいのですが
条件式をどうのように書けばいいのかわかりません。
助けていただけないでしょうか。調べてもわからず、申し訳ありません。

using UnityEngine; using System.Collections; using UnityEngine.UI; public class scoreScript : MonoBehaviour { public Text scoreText; //Text用変数 private int score = 0; //スコア計算用変数 void Start() { scoreText.text = "Score: 0"; //初期スコアを代入して表示 } //cube同士での衝突+100 cube以外との衝突+100 void OnCollisionEnter(Collision collision) { if () {// この部分がわかりません } else{ } } }

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

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

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

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

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

guest

回答2

0

ベストアンサー

当たったオブジェクトのタグで判断するのが一番簡単かもしれません。

Edit > Project > Setting > Tags and Layers
からタグの追加が出来ます。

イメージ説明
イメージ説明
イメージ説明
イメージ説明

追加したタグを各オブジェクトに設定すれば、OnCollisionEnter()の引数のcollisionから当たったGameObjectのtagが取得出来るのでそこで判断できると思います。

csharp

1public class scoreScript : MonoBehaviour 2{ 3 public Text scoreText; //Text用変数 4 private int score = 0; //スコア計算用変数 5 6 void Start() 7 { 8 score = 0; 9 SetScore(); //初期スコアを代入して表示 10 } 11 12 //cube同士での衝突+100 cube以外との衝突+100 13 void OnCollisionEnter( Collision collision ) 14 { 15 string yourTag = collision.gameObject.tag; 16 17 if( yourTag == "Cube" ) 18 { 19 score += 150; 20 } 21 else 22 { 23 score += 100; 24 } 25 26 SetScore(); 27 } 28 29 void SetScore() 30 { 31 scoreText.text = string.Format( "Score:{0}", score ); 32 } 33}

イメージ説明

ただ相手の属性や情報など取得せねばならない情報が多いのでしたら、edo_m18さんの回答のようにオブジェクトにスクリプトを追加する方法の方がいいと思います。

投稿2016/06/13 21:00

urahimono

総合スコア714

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

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

sileato

2016/06/14 02:10

タグで判別する方法があるんですね!まだまだ私が無知で知らないことがたくさんです…。 丁寧に解答していただきありがとうございました。
guest

0

これ、テキスト表示のオブジェクト「と」衝突したら、というふうにしたいわけではないですよね?

それであれば、衝突の判定自体はCube側にスクリプトを追加して、衝突判定時に相手がCubeだったら+150、それ以外だったら+100、となるようにする必要があります。

さっと実装するなら、Cube側にアタッチするスクリプトにスコアの参照を持たせて、そこに加算していく形がいいかなと思います。

ちなみに注意点として、Cube同士の衝突の場合は双方の衝突イベントが発生して2回加算されてしまうと思うので、そのあたりをうまく処理しないとならないですね。

投稿2016/06/13 06:22

edo_m18

総合スコア2283

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

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

sileato

2016/06/13 07:42

テキストとの衝突ではありません。わかりづらくてすいません
sileato

2016/06/14 02:06

Cube同士の衝突は確かに考えてみたら衝突判定が2回ですね。失念しておりました。 アドバイス感謝いたします。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.51%

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

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

質問する

関連した質問