そこで、Cardboard SDK に付属する Cardboard デモシーンをいじってみました。通常の機能は、赤い色の立方体が浮遊していて、見ると緑色に変わり、段ボールの磁石を押すと新しい場所に再出現します。このスクリプトはコレクションに添付されています。オブジェクトを変更し、スコアリング ロジックを追加しました。この質問のボール紙のビットを含めました。
現在、これは単一のオブジェクトに対して完全に機能します。しかし、地形上に収集可能なオブジェクトの複数のインスタンスが必要であり、それらを収集するときにスコア カウントを増やすこととは別に、同じ色変更ロジックをそれらに対して機能させたいとします。どうすればいいですか?すべての収集物に同じ名前を付け、その名前のゲームオブジェクトを明示的に見つけようとしました。しかし、そのロジックは他の収集物には及ばないようです。助けてください。
void start()
{
head = Camera.main.GetComponent<StereoController> ().Head;
startingPosition = transform.localPosition;
CardboardGUI.IsGUIVisible = true;
CardboardGUI.onGUICallback += this.OnGUI;
}
//これはオブジェクトの色を変更するためのロジックで、この後にスコア インクリメントとタイマー デクリメント ロジックを追加しました
void Update() {
RaycastHit hit;
bool isLookedAt = GetComponent<Collider>().Raycast(head.Gaze, out hit, Mathf.Infinity);
GetComponent<Renderer>().material.color = isLookedAt ? Color.green : Color.white;
if (Cardboard.SDK.CardboardTriggered && isLookedAt) {
// Teleport randomly.
Vector3 direction = Random.onUnitSphere;
direction.y = Mathf.Clamp(direction.y, 0.5f, 1f);
float distance = 2 * Random.value + 1.5f;
transform.localPosition = direction * distance;
//Score logic
}
//For placing the coconut back to original position on selecting reset.
void OnGUI() {
if (!CardboardGUI.OKToDraw(this)) {
return;
}
if (GUI.Button(new Rect(50, 50, 200, 50), "Reset")) {
transform.localPosition = startingPosition;
//reset count and seconds
count=0;
Seconds=60;
}
if (GUI.Button(new Rect(50, 110, 200, 50), "Recenter")) {
Cardboard.SDK.Recenter();
}
}