質問編集履歴

5

BitCoin

BitCoin score 51

2017/11/07 12:52  投稿

araycast unity color
raycast unity color
raycastを飛ばして
当たったオブジェクトの色を変え、2秒程度したら元の色に戻すという処理を実装したいのですが2秒とどめてまたもとに戻すという処理がどのように書けばいいかわかりません。
解決策などあるでしょうか?
```C#
public void OnColliderTouchedtouch(){
if (Input.GetMouseButtonDown(0)){
Ray ray = Camera.main.ScreenPointToRay(Input.mousePosition);
RaycastHit hit;
try{
if (Physics.Raycast (ray, out hit, Mathf.Infinity, mask)) {
switch (hit.collider.name) {
case "actionButton0":
hit.collider.GetComponent<MeshRenderer> ().material.color = Color.yellow;
gamemadefaultMaterial[0] = hit.collider.gameObject ;
break;
case "actionButton1":
hit.collider.GetComponent<MeshRenderer> ().material.color = Color.blue;
gamemadefaultMaterial[1] = hit.collider.gameObject ;
break;
case "actionButton2":
hit.collider.GetComponent<MeshRenderer> ().material.color = Color.yellow;
gamemadefaultMaterial[2] = hit.collider.gameObject ;
break;
}
}
}catch(NullReferenceException e){
}
}else {
try{
gamemadefaultMaterial[0].GetComponent<MeshRenderer> ().material.color = Color.blue;
gamemadefaultMaterial[1].GetComponent<MeshRenderer> ().material.color = Color.blue;
gamemadefaultMaterial[2].GetComponent<MeshRenderer> ().material.color = Color.blue;
}catch(NullReferenceException ex){
}
}
}
```
 変更後
```C#
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
using System;
public class vbScript : MonoBehaviour{
GameObject[] virtualButtonObject = new GameObject[3];
GameObject[] _3Dtext = new GameObject[3];
public TextMesh[] _3DtextInstance = new TextMesh[3];
Renderer[] virtualButtonMaterial = new Renderer[3];
int mask = 1 << 8;
public sample sampleClass;
GameObject[] gamemadefaultMaterial = new GameObject[3];
public static int timeSchedulleCount =1 ;
int colorFlag ;
void Start () {
_3DtextInstance [0].text = "1";
StartCoroutine ("colorWait");
}
// Update is called once per frame
void Update () {
OnColliderTouchedtouch ();
}
public IEnumerator colorWait(){
yield return new WaitForSeconds (2.0f);
try{
switch (colorFlag){
case 0:
gamemadefaultMaterial [0].GetComponent<MeshRenderer> ().material.color = Color.blue;
break;
case 1 :
gamemadefaultMaterial[1].GetComponent<MeshRenderer> ().material.color = Color.blue;
break;
case 2 :
gamemadefaultMaterial[2].GetComponent<MeshRenderer> ().material.color = Color.blue;
break ;
}
}catch(NullReferenceException ex){
}
}
public void OnColliderTouchedtouch(){
if (Input.GetMouseButtonDown(0)){
Ray ray = Camera.main.ScreenPointToRay(Input.mousePosition);
RaycastHit hit;
try{
if (Physics.Raycast (ray, out hit, Mathf.Infinity, mask)) {
switch (hit.collider.name) {
case "actionButton0":
hit.collider.GetComponent<MeshRenderer> ().material.color = Color.yellow;
if (timeSchedulleCount < 6)
timeSchedulleCount++;
_3DtextInstance [0].text = timeSchedulleCount + "";
gamemadefaultMaterial[0] = hit.collider.gameObject ;
colorFlag =0 ;
colorWait() ;
break;
case "actionButton1":
hit.collider.GetComponent<MeshRenderer> ().material.color = Color.yellow ;
gamemadefaultMaterial[1] = hit.collider.gameObject ;
colorFlag =1 ;
colorWait();
break;
case "actionButton2":
hit.collider.GetComponent<MeshRenderer> ().material.color = Color.yellow;
gamemadefaultMaterial[2] = hit.collider.gameObject ;
if (timeSchedulleCount > 1)
timeSchedulleCount--;
_3DtextInstance [0].text = timeSchedulleCount + "";
colorFlag =2 ;
colorWait();
break;
}
}
}catch(NullReferenceException e){
}
}else {
try{
}catch(NullReferenceException ex){
}
}
}
}
```
  • C#

    11020 questions

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

  • Unity

    7210 questions

    Unityは、ユニティテクノロジーが開発したゲームエンジンです。 主にモバイルやブラウザ向けのゲーム製作に利用されていましたが、3Dの重力付きゲームが簡単に作成できることから需要が増え、現在はマルチプラットフォームに対応しています。 言語はC言語/C++で書かれていますが、C#、JavaScript、Booで書かれたコードにも対応しています。

4 a

BitCoin

BitCoin score 51

2017/11/07 00:37  投稿

raycast unity color
araycast unity color
raycastを飛ばして
当たったオブジェクトの色を変え、2秒程度したら元の色に戻すという処理を実装したいのですが2秒とどめてまたもとに戻すという処理がどのように書けばいいかわかりません。
解決策などあるでしょうか?
```C#
public void OnColliderTouchedtouch(){
       if (Input.GetMouseButtonDown(0)){
           Ray ray = Camera.main.ScreenPointToRay(Input.mousePosition);   
           RaycastHit hit;
           try{
           if (Physics.Raycast (ray, out hit, Mathf.Infinity, mask)) {
               
               switch (hit.collider.name) {
               case "actionButton0":
                   hit.collider.GetComponent<MeshRenderer> ().material.color = Color.yellow;
                   
                   gamemadefaultMaterial[0] = hit.collider.gameObject ;
                   
                   break;
               case "actionButton1":
                   hit.collider.GetComponent<MeshRenderer> ().material.color = Color.blue;
                   gamemadefaultMaterial[1] = hit.collider.gameObject ;
                   break;
               case "actionButton2":
                   hit.collider.GetComponent<MeshRenderer> ().material.color = Color.yellow;
                   gamemadefaultMaterial[2] = hit.collider.gameObject ;
                   
                   break;
               }
           }
           }catch(NullReferenceException e){
           }
       }else {
           try{
           gamemadefaultMaterial[0].GetComponent<MeshRenderer> ().material.color = Color.blue;
           gamemadefaultMaterial[1].GetComponent<MeshRenderer> ().material.color = Color.blue;
           gamemadefaultMaterial[2].GetComponent<MeshRenderer> ().material.color = Color.blue;
           }catch(NullReferenceException ex){
           }
       }
   }
```
 変更後
```C#
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
using Vuforia;  
using System;
public class vbScript : MonoBehaviour{
   
   GameObject[] virtualButtonObject = new GameObject[3];
   GameObject[] _3Dtext = new GameObject[3];
   public TextMesh[] _3DtextInstance = new TextMesh[3];
   Renderer[] virtualButtonMaterial = new Renderer[3];
   int mask = 1 << 8;
   public sample sampleClass;
   GameObject[] gamemadefaultMaterial = new GameObject[3];
   public static int timeSchedulleCount =1 ;
   int colorFlag ;
   void Start () {
       
       _3DtextInstance [0].text = "1";
       StartCoroutine ("colorWait");
   }
   // Update is called once per frame
   void Update () {
       OnColliderTouchedtouch ();
   }
   public IEnumerator colorWait(){
       yield return new WaitForSeconds (2.0f);
       try{
       switch (colorFlag){
       case 0:
           gamemadefaultMaterial [0].GetComponent<MeshRenderer> ().material.color = Color.blue;
               break;
       case 1 :
           gamemadefaultMaterial[1].GetComponent<MeshRenderer> ().material.color = Color.blue;
               break;
       case 2 :
           gamemadefaultMaterial[2].GetComponent<MeshRenderer> ().material.color = Color.blue;
   gamemadefaultMaterial[2].GetComponent<MeshRenderer> ().material.color = Color.blue;
           break ;
       }
       }catch(NullReferenceException ex){
       }
   }
   public void OnColliderTouchedtouch(){
       if (Input.GetMouseButtonDown(0)){
           Ray ray = Camera.main.ScreenPointToRay(Input.mousePosition);   
           RaycastHit hit;
           try{
           if (Physics.Raycast (ray, out hit, Mathf.Infinity, mask)) {
               
               switch (hit.collider.name) {
               case "actionButton0":
                   hit.collider.GetComponent<MeshRenderer> ().material.color = Color.yellow;
                   
                   if (timeSchedulleCount < 6)
                       timeSchedulleCount++;
                   _3DtextInstance [0].text = timeSchedulleCount + "";
                   gamemadefaultMaterial[0] = hit.collider.gameObject ;
                   
                   colorFlag =0 ;
                       colorWait() ;
                   break;
               case "actionButton1":
                       hit.collider.GetComponent<MeshRenderer> ().material.color = Color.yellow ;
                   gamemadefaultMaterial[1] = hit.collider.gameObject ;
                       colorFlag =1 ;
                       colorWait();
                   break;
               case "actionButton2":
                   hit.collider.GetComponent<MeshRenderer> ().material.color = Color.yellow;
                   gamemadefaultMaterial[2] = hit.collider.gameObject ;
                   if (timeSchedulleCount > 1)
                       timeSchedulleCount--;
                   _3DtextInstance [0].text = timeSchedulleCount + "";
                   colorFlag =2 ;
                       colorWait();
                   break;
               }
           }
           }catch(NullReferenceException e){
           }
       }else {
           try{
           }catch(NullReferenceException ex){
           }
       }
   }
}
```
  • C#

    11020 questions

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

  • Unity

    7210 questions

    Unityは、ユニティテクノロジーが開発したゲームエンジンです。 主にモバイルやブラウザ向けのゲーム製作に利用されていましたが、3Dの重力付きゲームが簡単に作成できることから需要が増え、現在はマルチプラットフォームに対応しています。 言語はC言語/C++で書かれていますが、C#、JavaScript、Booで書かれたコードにも対応しています。

3 ああ

BitCoin

BitCoin score 51

2017/11/07 00:37  投稿

raycast unity color
raycastを飛ばして
当たったオブジェクトの色を変え、2秒程度したら元の色に戻すという処理を実装したいのですが2秒とどめてまたもとに戻すという処理がどのように書けばいいかわかりません。
解決策などあるでしょうか?
```C#
public void OnColliderTouchedtouch(){
       if (Input.GetMouseButtonDown(0)){
           Ray ray = Camera.main.ScreenPointToRay(Input.mousePosition);   
           RaycastHit hit;
           try{
           if (Physics.Raycast (ray, out hit, Mathf.Infinity, mask)) {
               
               switch (hit.collider.name) {
               case "actionButton0":
                   hit.collider.GetComponent<MeshRenderer> ().material.color = Color.yellow;
                   
                   gamemadefaultMaterial[0] = hit.collider.gameObject ;
                   
                   break;
               case "actionButton1":
                   hit.collider.GetComponent<MeshRenderer> ().material.color = Color.blue;
                   gamemadefaultMaterial[1] = hit.collider.gameObject ;
                   break;
               case "actionButton2":
                   hit.collider.GetComponent<MeshRenderer> ().material.color = Color.yellow;
                   gamemadefaultMaterial[2] = hit.collider.gameObject ;
                   
                   break;
               }
           }
           }catch(NullReferenceException e){
           }
       }else {
           try{
           gamemadefaultMaterial[0].GetComponent<MeshRenderer> ().material.color = Color.blue;
           gamemadefaultMaterial[1].GetComponent<MeshRenderer> ().material.color = Color.blue;
           gamemadefaultMaterial[2].GetComponent<MeshRenderer> ().material.color = Color.blue;
           }catch(NullReferenceException ex){
           }
       }
   }
```  
 変更後  
 
```C#  
using System.Collections;  
using System.Collections.Generic;  
using UnityEngine;  
using Vuforia;  
using System;  
public class vbScript : MonoBehaviour{  
     
   GameObject[] virtualButtonObject = new GameObject[3];  
   GameObject[] _3Dtext = new GameObject[3];  
   public TextMesh[] _3DtextInstance = new TextMesh[3];  
   Renderer[] virtualButtonMaterial = new Renderer[3];  
   int mask = 1 << 8;  
   public sample sampleClass;  
   GameObject[] gamemadefaultMaterial = new GameObject[3];  
   public static int timeSchedulleCount =1 ;  
   int colorFlag ;  
   void Start () {  
         
       _3DtextInstance [0].text = "1";  
       StartCoroutine ("colorWait");  
   }  
 
   // Update is called once per frame  
   void Update () {  
 
       OnColliderTouchedtouch ();  
 
   }  
 
   public IEnumerator colorWait(){  
       yield return new WaitForSeconds (2.0f);  
       try{  
       switch (colorFlag){  
       case 0:  
 
           gamemadefaultMaterial [0].GetComponent<MeshRenderer> ().material.color = Color.blue;  
 
               break;  
       case 1 :  
 
           gamemadefaultMaterial[1].GetComponent<MeshRenderer> ().material.color = Color.blue;  
 
               break;  
 
       case 2 :  
 
 
           gamemadefaultMaterial[2].GetComponent<MeshRenderer> ().material.color = Color.blue;  
           break ;  
 
       }  
 
       }catch(NullReferenceException ex){  
       }  
   }  
   public void OnColliderTouchedtouch(){  
       if (Input.GetMouseButtonDown(0)){  
           Ray ray = Camera.main.ScreenPointToRay(Input.mousePosition);     
           RaycastHit hit;  
 
           try{  
 
           if (Physics.Raycast (ray, out hit, Mathf.Infinity, mask)) {  
                 
 
               switch (hit.collider.name) {  
 
               case "actionButton0":  
 
                   hit.collider.GetComponent<MeshRenderer> ().material.color = Color.yellow;  
                     
                   if (timeSchedulleCount < 6)  
                       timeSchedulleCount++;  
 
                   _3DtextInstance [0].text = timeSchedulleCount + "";  
 
                   gamemadefaultMaterial[0] = hit.collider.gameObject ;  
                     
                   colorFlag =0 ;  
 
                       colorWait() ;  
 
                   break;  
 
               case "actionButton1":  
 
                       hit.collider.GetComponent<MeshRenderer> ().material.color = Color.yellow ;  
                   gamemadefaultMaterial[1] = hit.collider.gameObject ;  
                       colorFlag =1 ;  
 
                       colorWait();  
                   break;  
 
               case "actionButton2":  
 
                   hit.collider.GetComponent<MeshRenderer> ().material.color = Color.yellow;  
                   gamemadefaultMaterial[2] = hit.collider.gameObject ;  
                   if (timeSchedulleCount > 1)  
                       timeSchedulleCount--;  
 
                   _3DtextInstance [0].text = timeSchedulleCount + "";  
 
                   colorFlag =2 ;  
 
                       colorWait();  
                   break;  
               }  
           }  
           }catch(NullReferenceException e){  
 
           }  
 
       }else {  
 
           try{  
 
           }catch(NullReferenceException ex){  
 
           }  
       }  
 
   }  
}  
```
  • C#

    11020 questions

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

  • Unity

    7210 questions

    Unityは、ユニティテクノロジーが開発したゲームエンジンです。 主にモバイルやブラウザ向けのゲーム製作に利用されていましたが、3Dの重力付きゲームが簡単に作成できることから需要が増え、現在はマルチプラットフォームに対応しています。 言語はC言語/C++で書かれていますが、C#、JavaScript、Booで書かれたコードにも対応しています。

2

BitCoin

BitCoin score 51

2017/11/06 01:02  投稿

raycast unity color
raycastを飛ばして
当たったオブジェクトの色を変え、2秒程度したら元の色に戻すという処理を実装したいのですが2秒とどめてまたもとに戻すという処理がどのように書けばいいかわかりません。
解決策などあるでしょうか?
```C#
public void OnColliderTouchedtouch(){
       if (Input.GetMouseButtonDown(0)){
           Ray ray = Camera.main.ScreenPointToRay(Input.mousePosition);   
           RaycastHit hit;
           try{
           if (Physics.Raycast (ray, out hit, Mathf.Infinity, mask)) {
               
               switch (hit.collider.name) {
               case "actionButton0":
                   hit.collider.GetComponent<MeshRenderer> ().material.color = Color.yellow;
                     
 
                   gamemadefaultMaterial[0] = hit.collider.gameObject ;  
                     
 
                   break;
               case "actionButton1":
                   hit.collider.GetComponent<MeshRenderer> ().material.color = Color.blue;
                   
                   gamemadefaultMaterial[1] = hit.collider.gameObject ;
                   break;
               case "actionButton2":
                   hit.collider.GetComponent<MeshRenderer> ().material.color = Color.yellow;
                   gamemadefaultMaterial[2] = hit.collider.gameObject ;
                   
                   break;
               }
           }
           }catch(NullReferenceException e){
           }
       }else {
           try{
           gamemadefaultMaterial[0].GetComponent<MeshRenderer> ().material.color = Color.blue;
           gamemadefaultMaterial[1].GetComponent<MeshRenderer> ().material.color = Color.blue;
           gamemadefaultMaterial[2].GetComponent<MeshRenderer> ().material.color = Color.blue;
           }catch(NullReferenceException ex){
           }
       }
   }
```
  • C#

    11020 questions

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

  • Unity

    7210 questions

    Unityは、ユニティテクノロジーが開発したゲームエンジンです。 主にモバイルやブラウザ向けのゲーム製作に利用されていましたが、3Dの重力付きゲームが簡単に作成できることから需要が増え、現在はマルチプラットフォームに対応しています。 言語はC言語/C++で書かれていますが、C#、JavaScript、Booで書かれたコードにも対応しています。

1

BitCoin

BitCoin score 51

2017/11/06 01:01  投稿

raycast unity color
raycastを飛ばして
解決策などあるでしょうか?
```C#
public void OnColliderTouchedtouch(){
       if (Input.GetMouseButtonDown(0)){
           Ray ray = Camera.main.ScreenPointToRay(Input.mousePosition);   
           RaycastHit hit;
           try{
           if (Physics.Raycast (ray, out hit, Mathf.Infinity, mask)) {
               
               switch (hit.collider.name) {
               case "actionButton0":
                   hit.collider.GetComponent<MeshRenderer> ().material.color = Color.yellow;
                   break;
               case "actionButton1":
                   hit.collider.GetComponent<MeshRenderer> ().material.color = Color.blue;
                   
                   break;
               case "actionButton2":
                   hit.collider.GetComponent<MeshRenderer> ().material.color = Color.yellow;
                   gamemadefaultMaterial[2] = hit.collider.gameObject ;  
                     
                   break;
               }
           }
           }catch(NullReferenceException e){
           }
       }else {
           try{
           gamemadefaultMaterial[0].GetComponent<MeshRenderer> ().material.color = Color.blue;
           gamemadefaultMaterial[1].GetComponent<MeshRenderer> ().material.color = Color.blue;
           gamemadefaultMaterial[2].GetComponent<MeshRenderer> ().material.color = Color.blue;
           }catch(NullReferenceException ex){
           }
       }
   }
```
  • C#

    11020 questions

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

  • Unity

    7210 questions

    Unityは、ユニティテクノロジーが開発したゲームエンジンです。 主にモバイルやブラウザ向けのゲーム製作に利用されていましたが、3Dの重力付きゲームが簡単に作成できることから需要が増え、現在はマルチプラットフォームに対応しています。 言語はC言語/C++で書かれていますが、C#、JavaScript、Booで書かれたコードにも対応しています。

思考するエンジニアのためのQ&Aサイト「teratail」について詳しく知る