2014年10月15日水曜日

視点切り替え機能の追加 その4

俺の中で、仮説を立ててみた。
Buttonを
「RepeatButton」
にすればいいのでは?と。
RepeatButtonは、押してる限り、呼び出され続けるボタン。
なんか変わるかなぁ?と思って、やってみた。



でもその話は置いといて、
前のコードとかで見かけた、
「print」や「Debug.Log」
という、ログを出すプログラムについて説明しよう。

両方共、ログを出すプログラムだが、
なんと、出力するときにprintだとそのまま出てしまうが、
Debugだと、出す設定をしない限り、出力されない。
これはどういうメリットがあるか。
それは、容量や重さと関係する。
プログラムの文が多いと、その分容量が増え、重くなるが、
Debugで出力すると、その文がunity側で無視されて、出力される。
そうすると、ゲームをやる側も出力する側も軽くなる。
実際、ゲームが重いと、スペックが低めな人たちが
「やっべ重っ!」
とすぐやめてしまう。

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

ボタンを設置・・・


















しました。
後はスクリプト書いて~ってやるだけ。
カメラの話は。


























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個)。

続きは、カメラのボタンの設置というかなんというか・・・。

2014年9月28日日曜日

スタートボタンを押してまたスタートに戻ってきた時の対処 本編その2

今回は、
 「発射したのに、威力が弱すぎてスタート地点に戻ってくる」
を解決しようと思っています。

戻ってくると、必ず下の壁にぶつかる。

















発射時のスピードが遅い+防御突き抜けて来た場合は、
一回リセット+スタートしなければいけない。
でもこれ、めんどくさくない?
やっぱり、戻ってきたらまたスタートを押したくなるよね。
今回はそれを解決しました。
















この四角いオブジェクト。
これに、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     動くための軸の「動く側の動く支点」から見た方向。
この2つの値は、シーン画面上の「オレンジ色の矢印」として、数値を視覚化する。

















「Anchor」は矢印の始点で、「Axis」が矢印の向き。 矢印の位置と向きを調節することで、理想とする動作を実現することができた。

2014年9月17日水曜日

スタートボタンを押してまたスタートに戻ってきた時の対処

次は、僕のコリント
「発射したのに、威力が強すぎてガードを突き抜けて、スタート地点に戻ってくる」
「発射したのに、威力が弱すぎてスタート地点に戻ってくる」
という問題を解決しようと思っています。

予想だとやることは
「ガードのバネを強化する」
ことと
「発射後、スタート地点に戻ってきたらリセット処理をし、このイベントはスタートを押した後ではないと作動しないようにするスクリプトを組む」
ということをやればできるかなぁ、と思っております。