俺の中で、仮説を立ててみた。
Buttonを
「RepeatButton」
にすればいいのでは?と。
RepeatButtonは、押してる限り、呼び出され続けるボタン。
なんか変わるかなぁ?と思って、やってみた。
でもその話は置いといて、
前のコードとかで見かけた、
「print」や「Debug.Log」
という、ログを出すプログラムについて説明しよう。
両方共、ログを出すプログラムだが、
なんと、出力するときにprintだとそのまま出てしまうが、
Debugだと、出す設定をしない限り、出力されない。
これはどういうメリットがあるか。
それは、容量や重さと関係する。
プログラムの文が多いと、その分容量が増え、重くなるが、
Debugで出力すると、その文がunity側で無視されて、出力される。
そうすると、ゲームをやる側も出力する側も軽くなる。
実際、ゲームが重いと、スペックが低めな人たちが
「やっべ重っ!」
とすぐやめてしまう。
2014年10月15日水曜日
2014年10月7日火曜日
視点切り替え機能の追加 その3
void ChangeView(){結局こうなった 。
if (Camera.main == Main_Camera) {
Main_Camera.camera.enabled = false;
Go_Camera.camera.enabled = true;
Go2_Camera.camera.enabled = false;
Right_Camera.camera.enabled = false;
Left_Camera.camera.enabled = false;
Back_Camera.camera.enabled = false;
Up_Camera.camera.enabled = false;
Lost_Camera.camera.enabled = false;
Ball_Camera.camera.enabled = false;
} else if (Camera.main == Go_Camera) {
Main_Camera.camera.enabled = false;
Go_Camera.camera.enabled = false;
Go2_Camera.camera.enabled = true;
Right_Camera.camera.enabled = false;
Left_Camera.camera.enabled = false;
Back_Camera.camera.enabled = false;
Up_Camera.camera.enabled = false;
Lost_Camera.camera.enabled = false;
Ball_Camera.camera.enabled = false;
} else if (Camera.main == Go2_Camera) {
Main_Camera.camera.enabled = false;
Go_Camera.camera.enabled = false;
Go2_Camera.camera.enabled = false;
Right_Camera.camera.enabled = true;
Left_Camera.camera.enabled = false;
Back_Camera.camera.enabled = false;
Up_Camera.camera.enabled = false;
Lost_Camera.camera.enabled = false;
Ball_Camera.camera.enabled = false;
} else if (Camera.main == Right_Camera) {
Main_Camera.camera.enabled = false;
Go_Camera.camera.enabled = false;
Go2_Camera.camera.enabled = false;
Right_Camera.camera.enabled = false;
Left_Camera.camera.enabled = true;
Back_Camera.camera.enabled = false;
Up_Camera.camera.enabled = false;
Lost_Camera.camera.enabled = false;
Ball_Camera.camera.enabled = false;
} else if (Camera.main == Left_Camera) {
Main_Camera.camera.enabled = false;
Go_Camera.camera.enabled = false;
Go2_Camera.camera.enabled = false;
Right_Camera.camera.enabled = false;
Left_Camera.camera.enabled = false;
Back_Camera.camera.enabled = true;
Up_Camera.camera.enabled = false;
Lost_Camera.camera.enabled = false;
Ball_Camera.camera.enabled = false;
} else if (Camera.main == Back_Camera) {
Main_Camera.camera.enabled = false;
Go_Camera.camera.enabled = false;
Go2_Camera.camera.enabled = false;
Right_Camera.camera.enabled = false;
Left_Camera.camera.enabled = false;
Back_Camera.camera.enabled = false;
Up_Camera.camera.enabled = true;
Lost_Camera.camera.enabled = false;
Ball_Camera.camera.enabled = false;
} else if (Camera.main == Up_Camera) {
Main_Camera.camera.enabled = false;
Go_Camera.camera.enabled = false;
Go2_Camera.camera.enabled = false;
Right_Camera.camera.enabled = false;
Left_Camera.camera.enabled = false;
Back_Camera.camera.enabled = false;
Up_Camera.camera.enabled = false;
Lost_Camera.camera.enabled = true;
Ball_Camera.camera.enabled = false;
} else if (Camera.main == Lost_Camera) {
Main_Camera.camera.enabled = false;
Go_Camera.camera.enabled = false;
Go2_Camera.camera.enabled = false;
Right_Camera.camera.enabled = false;
Left_Camera.camera.enabled = false;
Back_Camera.camera.enabled = false;
Up_Camera.camera.enabled = false;
Lost_Camera.camera.enabled = false;
Ball_Camera.camera.enabled = true;
} else if (Camera.main == Lost_Camera) {
Main_Camera.camera.enabled = false;
Go_Camera.camera.enabled = false;
Go2_Camera.camera.enabled = false;
Right_Camera.camera.enabled = false;
Left_Camera.camera.enabled = false;
Back_Camera.camera.enabled = false;
Up_Camera.camera.enabled = false;
Lost_Camera.camera.enabled = false;
Ball_Camera.camera.enabled = true;
} else if (Camera.main == Ball_Camera) {
Main_Camera.camera.enabled = true;
Go_Camera.camera.enabled = false;
Go2_Camera.camera.enabled = false;
Right_Camera.camera.enabled = false;
Left_Camera.camera.enabled = false;
Back_Camera.camera.enabled = false;
Up_Camera.camera.enabled = false;
Lost_Camera.camera.enabled = false;
Ball_Camera.camera.enabled = false;
} else {
Main_Camera.camera.enabled = true;
Go_Camera.camera.enabled = false;
Go2_Camera.camera.enabled = false;
Right_Camera.camera.enabled = false;
Left_Camera.camera.enabled = false;
Back_Camera.camera.enabled = false;
Up_Camera.camera.enabled = false;
Lost_Camera.camera.enabled = false;
Ball_Camera.camera.enabled = false;
}
}
「ChangeView」
なのは、GUI(画面上にテキストやらボタンやらって出すやつ)をやろうとしているから。
それと、ボタンやめた。あの多いボタンやめた。一つのボタンでカメラを変えたかった。
あのままやっても良かったかもだけど、なんかなぁ・・・。
全部のプログラムはこちら
using UnityEngine;というわけで、ひとつのボタンにまとめて~ってやって、後はポチッとな!
using System.Collections;
public class ControlPanel : MonoBehaviour {
GameObject Main_Camera;
GameObject Go_Camera;
GameObject Go2_Camera;
GameObject Right_Camera;
GameObject Left_Camera;
GameObject Back_Camera;
GameObject Up_Camera;
GameObject Lost_Camera;
GameObject Ball_Camera;
void Start () {
Main_Camera = GameObject.FindWithTag("MainCamera");
Go_Camera = GameObject.FindWithTag("GoCamera");
Go2_Camera = GameObject.FindWithTag("Go2Camera");
Right_Camera = GameObject.FindWithTag("RightCamera");
Left_Camera = GameObject.FindWithTag("LeftCamera");
Back_Camera = GameObject.FindWithTag("BackCamera");
Up_Camera = GameObject.FindWithTag("UpCamera");
Lost_Camera = GameObject.FindWithTag("LostCamera");
Ball_Camera = GameObject.FindWithTag("BallCamera");
}
void OnGUI () {
GUIStyle style = new GUIStyle();
style.fontSize = 30;//文字サイズ
style.normal.textColor = Color.white;//文字色
print("通るって");
if ( GUI.Button( new Rect(1100, 400, 200, 50), "Start!" )){
Debug.Log("Startボタンが押されました。");
}
if ( GUI.Button( new Rect(1100, 460, 200, 50), "Reset?" )){
Debug.Log("Resetボタンが押されました。");
}
if ( GUI.Button( new Rect(1100, 520, 200, 50), "Camera" )){
Debug.Log("Cameraボタンが押されました。");
// ChangeView();
}
}
void ChangeView(){
print ("通るよ");
if (Camera.main == Main_Camera) {
Main_Camera.camera.enabled = false;
Go_Camera.camera.enabled = true;
Go2_Camera.camera.enabled = false;
Right_Camera.camera.enabled = false;
Left_Camera.camera.enabled = false;
Back_Camera.camera.enabled = false;
Up_Camera.camera.enabled = false;
Lost_Camera.camera.enabled = false;
Ball_Camera.camera.enabled = false;
} else if (Camera.main == Go_Camera) {
Main_Camera.camera.enabled = false;
Go_Camera.camera.enabled = false;
Go2_Camera.camera.enabled = true;
Right_Camera.camera.enabled = false;
Left_Camera.camera.enabled = false;
Back_Camera.camera.enabled = false;
Up_Camera.camera.enabled = false;
Lost_Camera.camera.enabled = false;
Ball_Camera.camera.enabled = false;
} else if (Camera.main == Go2_Camera) {
Main_Camera.camera.enabled = false;
Go_Camera.camera.enabled = false;
Go2_Camera.camera.enabled = false;
Right_Camera.camera.enabled = true;
Left_Camera.camera.enabled = false;
Back_Camera.camera.enabled = false;
Up_Camera.camera.enabled = false;
Lost_Camera.camera.enabled = false;
Ball_Camera.camera.enabled = false;
} else if (Camera.main == Right_Camera) {
Main_Camera.camera.enabled = false;
Go_Camera.camera.enabled = false;
Go2_Camera.camera.enabled = false;
Right_Camera.camera.enabled = false;
Left_Camera.camera.enabled = true;
Back_Camera.camera.enabled = false;
Up_Camera.camera.enabled = false;
Lost_Camera.camera.enabled = false;
Ball_Camera.camera.enabled = false;
} else if (Camera.main == Left_Camera) {
Main_Camera.camera.enabled = false;
Go_Camera.camera.enabled = false;
Go2_Camera.camera.enabled = false;
Right_Camera.camera.enabled = false;
Left_Camera.camera.enabled = false;
Back_Camera.camera.enabled = true;
Up_Camera.camera.enabled = false;
Lost_Camera.camera.enabled = false;
Ball_Camera.camera.enabled = false;
} else if (Camera.main == Back_Camera) {
Main_Camera.camera.enabled = false;
Go_Camera.camera.enabled = false;
Go2_Camera.camera.enabled = false;
Right_Camera.camera.enabled = false;
Left_Camera.camera.enabled = false;
Back_Camera.camera.enabled = false;
Up_Camera.camera.enabled = true;
Lost_Camera.camera.enabled = false;
Ball_Camera.camera.enabled = false;
} else if (Camera.main == Up_Camera) {
Main_Camera.camera.enabled = false;
Go_Camera.camera.enabled = false;
Go2_Camera.camera.enabled = false;
Right_Camera.camera.enabled = false;
Left_Camera.camera.enabled = false;
Back_Camera.camera.enabled = false;
Up_Camera.camera.enabled = false;
Lost_Camera.camera.enabled = true;
Ball_Camera.camera.enabled = false;
} else if (Camera.main == Lost_Camera) {
Main_Camera.camera.enabled = false;
Go_Camera.camera.enabled = false;
Go2_Camera.camera.enabled = false;
Right_Camera.camera.enabled = false;
Left_Camera.camera.enabled = false;
Back_Camera.camera.enabled = false;
Up_Camera.camera.enabled = false;
Lost_Camera.camera.enabled = false;
Ball_Camera.camera.enabled = true;
} else if (Camera.main == Lost_Camera) {
Main_Camera.camera.enabled = false;
Go_Camera.camera.enabled = false;
Go2_Camera.camera.enabled = false;
Right_Camera.camera.enabled = false;
Left_Camera.camera.enabled = false;
Back_Camera.camera.enabled = false;
Up_Camera.camera.enabled = false;
Lost_Camera.camera.enabled = false;
Ball_Camera.camera.enabled = true;
} else if (Camera.main == Ball_Camera) {
Main_Camera.camera.enabled = true;
Go_Camera.camera.enabled = false;
Go2_Camera.camera.enabled = false;
Right_Camera.camera.enabled = false;
Left_Camera.camera.enabled = false;
Back_Camera.camera.enabled = false;
Up_Camera.camera.enabled = false;
Lost_Camera.camera.enabled = false;
Ball_Camera.camera.enabled = false;
} else {
print ("やばいよやばいよ");
Main_Camera.camera.enabled = true;
Go_Camera.camera.enabled = false;
Go2_Camera.camera.enabled = false;
Right_Camera.camera.enabled = false;
Left_Camera.camera.enabled = false;
Back_Camera.camera.enabled = false;
Up_Camera.camera.enabled = false;
Lost_Camera.camera.enabled = false;
Ball_Camera.camera.enabled = false;
}
}
}
・・・とやりたかった。カチカチやりたかった。でも~反応しねぇ!else飛んだ!
やばいよやばいよ!ガチでやばいよ!!
いろいろ検証した結果、一回しか押せなかった!
この一回しか押せない現象も実はまだよくわかってない。
これから大変だ。
2014年10月6日月曜日
視点切り替え機能の追加 その2
ボタンを設置・・・

しました。
後はスクリプト書いて~ってやるだけ。
カメラの話は。
あれ?エラー起こしてる・・・?
これかな?(選択されてるところから上)
あ、これだ。
この選択されているところは、
「カメラに付けられているタグからそのオブジェクトを探す」
というプログラムである。
このプログラムがないと、下の
「OnMouseDown」
が発動しないわけではないが、誤動作を起こす危険性がある。
この選択されているところを消す(コメントアウト)と、動作したが、
別のカメラに移ってしまった(指定したカメラとは別のやつ) 。
解決しないとなぁ・・・。

しました。
後はスクリプト書いて~ってやるだけ。
カメラの話は。
using UnityEngine;これでできるはず・・・?
using System.Collections;
public class MainCamera : MonoBehaviour {
public Camera Main_Camera;
public Camera Go_Camera;
public Camera Go2_Camera;
public Camera Right_Camera;
public Camera Left_Camera;
public Camera Back_Camera;
public Camera Up_Camera;
public Camera Lost_Camera;
public Camera Ball_Camera;
// Use this for initialization
void Start () {
Main_Camera = GameObject.FindWithTag ("MainCamera");
Go_Camera = GameObject.FindWithTag ("GoCamera");
Go2_Camera = GameObject.FindWithTag("Go2Camera");
Right_Camera = GameObject.FindWithTag("RightCamera");
Left_Camera = GameObject.FindWithTag("LeftCamera");
Back_Camera = GameObject.FindWithTag("BackCamera");
Up_Camera = GameObject.FindWithTag("UpCamera");
Lost_Camera = GameObject.FindWithTag("LostCamera");
Ball_Camera = GameObject.FindWithTag("BallCamera");
}
void OnMouseDown () {
print ("通るよ");
Main_Camera.enabled = true;
Go_Camera.enabled = false;
Go2_Camera.enabled = false;
Right_Camera.enabled = false;
Left_Camera.enabled = false;
Back_Camera.enabled = false;
Up_Camera.enabled = false;
Lost_Camera.enabled = false;
Ball_Camera.enabled = false;
print("通ったよ");
}
}
あれ?エラー起こしてる・・・?
これかな?(選択されてるところから上)
あ、これだ。
この選択されているところは、
「カメラに付けられているタグからそのオブジェクトを探す」
というプログラムである。
このプログラムがないと、下の
「OnMouseDown」
が発動しないわけではないが、誤動作を起こす危険性がある。
この選択されているところを消す(コメントアウト)と、動作したが、
別のカメラに移ってしまった(指定したカメラとは別のやつ) 。
解決しないとなぁ・・・。
2014年10月2日木曜日
視点切り替え機能の追加 その1
前回
「コリントの上板にキレイに木目のテクスチャを貼り付ける」
と、言ったな?あれは嘘だ (今度やります(未解決now))
今回は、
「視点切り替え機能の追加」
をやろうと思います。
・・・と言っても、カメラ増やしてスクリプト組んで~ってやるだけですが、
これが案外むずかしい。
とりあえず、カメラ設置。
計8個カメラ設置(そのうちひとつはメインなので、設置したのは7個)。
続きは、カメラのボタンの設置というかなんというか・・・。
「コリントの上板にキレイに木目のテクスチャを貼り付ける」
と、言ったな?
今回は、
「視点切り替え機能の追加」
をやろうと思います。
・・・と言っても、カメラ増やしてスクリプト組んで~ってやるだけですが、
これが案外むずかしい。
とりあえず、カメラ設置。
計8個カメラ設置(そのうちひとつはメインなので、設置したのは7個)。
続きは、カメラのボタンの設置というかなんというか・・・。
2014年9月28日日曜日
スタートボタンを押してまたスタートに戻ってきた時の対処 本編その2
今回は、
「発射したのに、威力が弱すぎてスタート地点に戻ってくる」
を解決しようと思っています。
戻ってくると、必ず下の壁にぶつかる。

発射時のスピードが遅い+防御突き抜けて来た場合は、
一回リセット+スタートしなければいけない。
でもこれ、めんどくさくない?
やっぱり、戻ってきたらまたスタートを押したくなるよね。
今回はそれを解決しました。
この四角いオブジェクト。
これに、C#でこういうスクリプトを書く
このスクリプトは、
いろいろ呼び出してるから、
「Blue Ball」
とか
「Start Button」
とか
「Reser Button」
(スペルミスしてます(直しません元がこれなので(Resetと書きたかったんだよねこれ)))
とか出てくるけど、
実際のところボールはブルーじゃない。
銀色のパチンコ球みたいなやつです。
次は、
「コリントの上板にキレイに木目のテクスチャを貼り付ける」
ということをやります。
「発射したのに、威力が弱すぎてスタート地点に戻ってくる」
を解決しようと思っています。
戻ってくると、必ず下の壁にぶつかる。

発射時のスピードが遅い+防御突き抜けて来た場合は、
一回リセット+スタートしなければいけない。
でもこれ、めんどくさくない?
やっぱり、戻ってきたらまたスタートを押したくなるよね。
今回はそれを解決しました。
この四角いオブジェクト。
これに、C#でこういうスクリプトを書く
using UnityEngine;
using System.Collections;
public class BackCoping : MonoBehaviour {
//衝突時の処理
public void OnCollisionEnter(Collision collision)
{
//ぶつかったものの指定(ボールかどうか)
if (collision.gameObject == GameObject.Find ("Blue Ball"))
{
GameObject resetComp;こんな感じ。
GameObject startComp;
//ボールが当たった時のみ以下の処理を発動させる
//ボールが当たった時はスタートボタンが押される前の状態に戻される
//スタートが押される前の状態とは
//「スタートボタン押された」フラグがfalseになっていること
//「リセットボタン押された」フラグがtrueになっていること
//これはスタートボタンを押すと逆転する
//なので戻ってきた時のためにフラグを戻す必要がある
startComp = GameObject.Find ("Start Button");
resetComp = GameObject.Find ("Reser Button");
startComp.GetComponent<ballshoot>().ButtonFlag = false;
resetComp.GetComponent<Reset>().ButtonFlag = true;
}
}
}
このスクリプトは、
いろいろ呼び出してるから、
「Blue Ball」
とか
「Start Button」
とか
「Reser Button」
(スペルミスしてます(直しません元がこれなので(Resetと書きたかったんだよねこれ)))
とか出てくるけど、
実際のところボールはブルーじゃない。
銀色のパチンコ球みたいなやつです。
次は、
「コリントの上板にキレイに木目のテクスチャを貼り付ける」
ということをやります。
2014年9月19日金曜日
スタートボタンを押してまたスタートに戻ってきた時の対処 本編
予告通り、僕のコリントの
「発射したのに、威力が強すぎてガードを突き抜けて、スタート地点に戻ってくる」
「発射したのに、威力が弱すぎてスタート地点に戻ってくる」
という問題を解決しようと思います。
まず、オブジェクトを扉のように動かすには、 「ヒンジジョイント」 という要素が必要です。
これはその名の通り、
オブジェクトどうしをつなぐ要素で、 オブジェクトを扉のように動かすことができます。
このヒンジジョイントは、動く側と動かす側の両方に設定しないと動作しない。
これがヒンジジョイントの設定画面。

「Anchor」は矢印の始点で、「Axis」が矢印の向き。 矢印の位置と向きを調節することで、理想とする動作を実現することができた。
「発射したのに、威力が強すぎてガードを突き抜けて、スタート地点に戻ってくる」
「発射したのに、威力が弱すぎてスタート地点に戻ってくる」
という問題を解決しようと思います。
まず、オブジェクトを扉のように動かすには、 「ヒンジジョイント」 という要素が必要です。
これはその名の通り、
オブジェクトどうしをつなぐ要素で、 オブジェクトを扉のように動かすことができます。
このヒンジジョイントは、動く側と動かす側の両方に設定しないと動作しない。
これがヒンジジョイントの設定画面。

- Anchor 動く側の動く支点の位置。
- Axis 動くための軸の「動く側の動く支点」から見た方向。
「Anchor」は矢印の始点で、「Axis」が矢印の向き。 矢印の位置と向きを調節することで、理想とする動作を実現することができた。
2014年9月17日水曜日
スタートボタンを押してまたスタートに戻ってきた時の対処
次は、僕のコリントの
「発射したのに、威力が強すぎてガードを突き抜けて、スタート地点に戻ってくる」
「発射したのに、威力が弱すぎてスタート地点に戻ってくる」
という問題を解決しようと思っています。
予想だとやることは
「ガードのバネを強化する」
ことと
「発射後、スタート地点に戻ってきたらリセット処理をし、このイベントはスタートを押した後ではないと作動しないようにするスクリプトを組む」
ということをやればできるかなぁ、と思っております。
「発射したのに、威力が強すぎてガードを突き抜けて、スタート地点に戻ってくる」
「発射したのに、威力が弱すぎてスタート地点に戻ってくる」
という問題を解決しようと思っています。
予想だとやることは
「ガードのバネを強化する」
ことと
「発射後、スタート地点に戻ってきたらリセット処理をし、このイベントはスタートを押した後ではないと作動しないようにするスクリプトを組む」
ということをやればできるかなぁ、と思っております。
登録:
投稿 (Atom)









