2014年12月1日月曜日

ボールの個数を増やす その1

ボールの個数を増やす話。とりあえずあのバグは後。課題もやりつつ、バグ修正もしつつって感じ。

  • オプションでボールの個数を変更可能
  • Startの上にボールボタン配置
  • 押すとStart地点・戻ってこないようにする板の近くにボールが出てくる
  • 万が一、一回以上Start済みのボールがStartゾーンに戻ってきて未Startボールに当たった場合、未Startボールのほうが削除・補充される。そしてまた発射できるようになる
  • 複数個ボールを出して発射した場合、それぞれのボールに同時に同じ威力の力ではなく、それぞれのボールに同時に違う威力の力が与えられる
  • なお、発射台にないボールに関しては力を与えない
  • 壁を作成し、コリントから外れていった玉はそこをさまよっている
  • 壁の上には透明の壁を配置させて、外に出ないようにする
  • 万が一、壁を抜けて落下したボールに関しては、削除される
  • 複数個ボールを出しResetした場合、ボールの残り個数カウンターが初期設定値に戻る、場に出ているボールが全て削除
これらを実現するには、「引っ張って打つ機構」のような「物がボールを押し出す機構」を作らなければならない。
なぜなら、スクリプトだと順番に読み込まれるからである。
実際のコリントに近づけることによって再現する。

2014年11月24日月曜日

ボールカメラを酔わないようにする その3

「ボールとカメラは別」
>>ほい















 「ボールの位置を取得して、毎フレームごとにボールにカメラをついていかせる」
「っていうスクリプトをカメラにくっつける」
>>そぉい









using UnityEngine;
using System.Collections;

public class BallFollowCamera : MonoBehaviour {
    GameObject BlueBall;
    public float distance;
    public float height;
//    public float limit;

//    private Vector3 initialPosition;
   
    // Use this for initialization
    void Start () {
        BlueBall = GameObject.FindWithTag ("BlueBall");
        Debug.Log ("BlueBall: " + BlueBall.name);
    }
   
    // Update is called once per frame
    void Update () {
        this.transform.position = new Vector3(BlueBall.transform.position.x, BlueBall.transform.position.y + height, BlueBall.transform.position.z+ distance);
    }
}





「完」


そして・・・













やったぁ!!!!!
できたぁ!
ボールカメラキタ━━━━(゚∀゚)━━━━!!



後は、
「ボールの発射スクリプトを調整する」
「戻ってこないようにする板の可動範囲の調節」

だ!



※他の課題
「玉の撃ちだす方向の調整(Vector3の理解)」
「点数関連機能の実装」
「ボールの個数制限や点数系統の例外処理」
「発射機構の改善(引っ張って打つ奴の実装)」
「コリントの板に木目のテクスチャをキレイに貼り付ける(最難関)」
ここまで来て、やっとAndroidとPC(ブラウザ)版の公開になります。

次回作は予定済み!もう見本の材料も用意済み!お楽しみに!

2014年11月9日日曜日

ボールの発射スクリプトを調整する その2 + ボールカメラを酔わないようにする その2 + 【新課題】 戻ってこないようにする板の可動範囲の調節 その1

毎度の如く、「タイトルが長い」。
しょうがない。課題が増えていくんだもの。うーやだよー課題増えるのやだよ~(´・ω・`)ショボーン

とりあえず、
「ボールの発射スクリプトを調整する」

「ボールカメラを酔わないようにする」
だ。
「ボールカメラを酔わないようにする」
は後で・・・として、先に
「ボールの発射スクリプトを調整する」
だ。
今まで、
( ballObject.transform.forward ) * Speed + ballObject.transform.right,  ・・・
だった。
これ、forwardでやってたからダメだった。






だから言ったじゃないか!






この通り。
これを
new Vector3(2,StartY,Speed),  ・・・
にすると・・・






こ の 通 り。






やった進んだ!
Vector3でxyzを指定してやったらできた!



さてと次。
「戻ってこないようにする板の可動範囲の調節」
だ。
単純にこれは、あの斜めの板がまるで壊れたかのように真っ直ぐになっちゃう現象。

修正するところ
ヒンジジョイントの設定

簡単!・・・と思って行った時期も私にはありました。
「回転が到達できる最低/最高角度」
> なんかグワン!っていく
「Springを設定しないと自動的に戻ってこない」
> なんか重力関連で自動で戻ってきてた

  1. 設定してみた。
  2. 動作見てみた。
  3. なんかあんまり変わらんかった。(´・ω・`)ショボーン
角度ってなんなの!?
n°とかそれなの?
それともxyzに準じた角度なの?
よくわからん。
バネとかもあんまり意味を成してないような気もする。
Shadeだから?ShadeのObjectだから?それともUnity側?

あれは置いといて次。
「ボールカメラを酔わないようにする」
だ。
ググったり考えたりしたら、
「ボールとカメラは別で、カメラをボールの動きに合わせて毎フレームごとにボールについていかせる」
ってことをやればいい、ってことに気がついた。
「何言ってんだこいつ」
って思うかもだが、詳しく簡単に言うとこう。
  1. ボールとカメラは別。
  2. ボールの位置を取得して、毎フレームごとにボールにカメラをついていかせる。
  3. っていうスクリプトをカメラにくっつける。
こんな感じ。

この先書くのは次回かな・・・。
ボール回るようになったのはいいんだけど、なんで解決済みの課題からまた課題が出てくるのが不思議。

2014年11月7日金曜日

ボールを回転させる その2 + 【新課題】ボールの発射スクリプトを調整する その1 + 【新課題】ボールカメラを酔わないようにする その1

ボールを回転させる話・・・
なんと、バウンドさせる奴が悪さをしていた!
動摩擦係数と静止摩擦力がになっていた!
そりゃ回らないよ。
「摩擦力0」って。

なんで分かった?
  1. 別のプロジェクトで試してみた
  2. いろいろ比較した
  3. その結果、Physics Material(バウンドさせる奴)が無いことに気づく
  4. コピペして割り当てる
  5. 回らん。
  6. ググって確認した
  7. 摩擦力0だった。
というわけだ。

というわけで、摩擦を初期値の
「0.4」
にした。

回った!やっt・・・え?








おいどういうことだよ




多分回った事により、発射スクリプトの
「forward」
のところ。多分狂ったんだと思われる。

それと、これ





なんということでしょう







おいボールカメラ。
これじゃぁ酔うじゃないか。




結論
回転はいいんだ。
発射のスクリプトと
ボールカメラを酔わないようにする。



また課題増えた・・・(´・ω・`)ショボーン

2014年11月2日日曜日

壁をなくす その2 + 【新課題】ボールを回転させる その1

「ボールのy座標が『0』より下になったらReset処理を発動させる」
というスクリプトを書いてボールにくっつければ、完成!
ってことにしたい。

何と言うか・・・。
見つけたこととすれば、
「Resetを押すと、戻ってくることには戻ってくる」
「戻ってくるはいいけど、突き抜けてく」

簡単に言うと、回転やら移動やらを止めた状態で初期位置にテレポートさせればいいわけだ。
なんで移動を止めるか。
それは、ボールに割り当てたComponentの中で、
「RigidBody」
という、物理属性を与えるComponentを与えていた。
重力を有効にしていた。
落ちることで加速されていくため、超高速移動Objectとして当たり判定を突き抜けていた。
そのために止める。

それには、こういうプログラムを使う。
ballObject.rigidbody.velocity = Vector3.zero;
ballObject.rigidbody.angularVelocity = Vector3.zero;
上は移動を止める、
下は回転を止める。

まぁこれで出来たわけだ。





・・・まてよ?
ボールってほんとに回転してる?
 いやまさかぁ。
そのまさかがある?


あった。


_人人人人人人_
>回転してねぇ!<
 ̄Y^Y^Y^Y^Y^Y^ ̄

あの
「見た目が鉄のようなボール」。
回転してるように見えたあのボールも、実は

残念!それは目の錯覚だよ!
 テクスチャをわかりやすいやつに変えたら発覚した。
どうしてこうなった。



とりあえず、回転させたい。
でも回転などのやつにも、標準でunityは制限をかけているようだ。(まーた課題が増えた(´・ω・`)ショボーン)






壁をなくし、落ちた時の対処もできた!
でも、ボールが回転してなかったのは盲点だった。チッキショォォ!

また次回!

2014年11月1日土曜日

影の見え方 + 壁をなくす その1


 影の見え方を見るため、ライトを変えてみる。













これと













これを













これに。


すると













これから













これに。

ライトを変えた理由としては、ダボとか釘とかの影が出るかな~と思ったため。


・・・違和感あるな。
釘とかの影が出てこない・・・。
壁も違和感が・・・

そうだ。
別の課題をちゃちゃっとやって終わらせてみるか。

別の課題
「壁をなくす」

いけるんじゃね?
やってみた。













こんな感じ。
壁の影的違和感はなくなった。


問題はまだあるが。





釘とかの影が出てないこと。

調べたら、
ライトは、Shadow と投影することもできます。 影は、Pro 専用の機能です。 影プロパティは、ライトごとに調整可能です。
 「影はUnity Proな!
って書いてあった(´・ω・`)ショボーン
でも、なんか変な影的何かは出てるんだよなぁ・・・あの黒い部分。
この黒い部分は、結局光が当たってないところらしい。

調べたら、
「無料版でもUnity4.2から『HardShadow』のみ使用可能」
「『SoftShadow』でもHardShadowに自動でなる」
「出力プラットフォームが『Android・IOS・BlackBerry』だとできない」
と書いてあり、見てみたら、

_人人人_
>Android<
 ̄Y^Y^Y^ ̄
やってしもた・・・。

変える前

























影はこちら













キタ━━━━(゚∀゚)━━━━!!
影キタ━━━━(゚∀゚)━━━━!!


もう一つの課題、
それは、ボールがどっか行っちゃうんじゃね?ってこと。
このコリント、落ちるとResetできなくなるんだよなぁ・・・

というわけで
「ボールのy座標が『0』より下になったらReset処理を発動させる」
というスクリプトを書いてボールにくっつければ、完成!
ってことにしたい。

とりあえずここまで!
続きは次回!

2014年10月18日土曜日

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

はぁ・・・長くなっちゃったなぁ・・・

前回、この話をどっかにやっちゃったのでやるよ!

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





右 っ か わ

複数押されてたことに気が付かんかった・・・
別に、
「何個もログが出る」
ってわけではなかったんや・・・
気がつけばなぁ・・・

これはこれとして、
ひとつのボタンにまとめて~ってやって、後はポチッとな!
・・・とやりたかった。カチカチやりたかった。でも~反応しねぇ!else飛んだ!
やばいよやばいよ!ガチでやばいよ!!
これ。
いやぁーねぇ。

using UnityEngine;
using System.Collections;

public class ControlPanel : MonoBehaviour {
    GameObject Current_Camera;

    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 () {
        Current_Camera = GameObject.FindWithTag("MainCamera");


        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");
        Debug.Log ("Main_Camera: " + Main_Camera.name);
        Debug.Log ("Go_Camera: " + Go_Camera.name);
        Debug.Log ("Go2_Camera: " + Go2_Camera.name);
        Debug.Log ("Right_Camera: " + Right_Camera.name);
        Debug.Log ("Left_Camera: " + Left_Camera.name);
        Debug.Log ("Back_Camera: " + Back_Camera.name);
        Debug.Log ("Up_Camera: " + Up_Camera.name);
        Debug.Log ("Lost_Camera: " + Lost_Camera.name);
        Debug.Log ("Ball_Camera: " + Ball_Camera.name);
    }

    void OnGUI () {
        GUIStyle style = new GUIStyle();
        style.fontSize = 30;//文字サイズ
        style.normal.textColor = Color.white;//文字色
        Debug.Log("通るって");
        if ( GUI.Button( new Rect(1100, 400, 200, 50), "Start!" )){
            Debug.Log("Startボタンが押されました。");

            GameObject startComp;
            startComp = GameObject.Find ("Start Button");
            startComp.GetComponent<ballshoot>().OnMouseDown();

        }
        if ( GUI.Button( new Rect(1100, 460, 200, 50), "Reset?" )){
            Debug.Log("Resetボタンが押されました。");

            GameObject resetComp;
            resetComp = GameObject.Find ("Reser Button");
            resetComp.GetComponent<Reset>().OnMouseDown();

        }
        if ( GUI.Button( new Rect(1100, 520, 200, 50), "Camera" )){
            Debug.Log("Cameraボタンが押されました。");
            ChangeView();
        }
//        if ( GUI.RepeatButton( new Rect(1100, 520, 200, 50), "Camera" )){
//            Debug.Log("Cameraボタンが押されました。");
//            //            ChangeView();
//        }

    }

    void ChangeView(){

        Debug.Log ("通るよ" + Current_Camera.name);
        if (Current_Camera.name == Main_Camera.name)  {
            Current_Camera = Go_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 (Current_Camera.name == Go_Camera.name) {
            Current_Camera = Go2_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 (Current_Camera.name == Go2_Camera.name) {
            Current_Camera = Right_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 (Current_Camera.name == Right_Camera.name) {
            Current_Camera = 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 = true;
            Back_Camera.camera.enabled = false;
            Up_Camera.camera.enabled = false;
            Lost_Camera.camera.enabled = false;
            Ball_Camera.camera.enabled = false;
          
        } else if (Current_Camera.name == Left_Camera.name) {
            Current_Camera = 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 = true;
            Up_Camera.camera.enabled = false;
            Lost_Camera.camera.enabled = false;
            Ball_Camera.camera.enabled = false;
          
        } else if (Current_Camera.name == Back_Camera.name) {
            Current_Camera = 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 = true;
            Lost_Camera.camera.enabled = false;
            Ball_Camera.camera.enabled = false;
          
        } else if (Current_Camera.name == Up_Camera.name) {
            Current_Camera = 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 = true;
            Ball_Camera.camera.enabled = false;
          
        } else if (Current_Camera.name == Lost_Camera.name) {
            Current_Camera = Ball_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 (Current_Camera.name == Ball_Camera.name) {
            Current_Camera = Main_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 {
            Debug.Log("やばいよやばいよ");
            Current_Camera = Main_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;
          
        }

    }

}
ってやった。
単純に、
「GameObject」
もなんにもない
「Current_Camera」
を利用している。
「正常に動作しないんじゃね!?」
と思うかもしれないが、これは
「『Current_Camera』に指定するCameraを切り替える」
という処理をしている。
enable関係は、単純にこれが無いと、
「どのCameraをenableにするか、どのCameraをdisabledにするか」
ができない。
この処理をやらないと、正常にCameraが切り替わらない。

このコードでは、
「GUI表示」
もやっている。
それで実際、GUIから発射などもできるようになっている。



 












このボタンの通り。













ボールを追うCameraもあるよ!





 やってみたい?いやいや。まだまだ。課題は残ってるからねぇ。

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日水曜日

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

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

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

2014年9月16日火曜日

Unityで作ったゲームをGooglePlayStoreへ投稿するために その2

次は、Google Play Storeに投稿!・・・と簡単にもいかず(これは本当)。
まずは、Google Playに開発者登録をしなければいけない。

その開発者登録は25$かかる。 (とはいえ、実際200円しか減らなかった)
でもこれ、お金を払っても完全登録は48時間後(2日)かかるらしい(そのアカウントが違反してないかとかの審査のため)。

アップロード!












設定!













 説明!(画面から見切れているけどアイコンも)













と、投稿するためにやるのはこんな感じ。
そして後は公開するだけ!
でも・・・公開するのに時間がかかる。
僕の場合は1日でできたが、場合によっては2日以上かかるらしい。

そして公開できたものがこちら


Get it on Google Play 
 

2014年9月15日月曜日

Unityで作ったゲームをGooglePlayStoreへ投稿するために その1

 Unityで作ったゲームをGooglePlayStoreへ投稿するためには、まずUnity上で色々と設定をする必要がある。

その設定とは、基本的に6つ(ぐらい)ある。
  • 会社名(作成者名)
  • 製品名
  • アイコン
  • 製品のID設定
  • 製品のバージョンの設定
  • 投稿するための鍵の作成
 最初の5つは簡単だったが、最後の1つが「簡単だけど、紛らわしい(主に見たサイトが)」。
でも、その紛らわしさを超えれば、ちょうどいい具合の面倒臭さと、「もうすぐ公開だ!」という解放感が待っている。
















おお・・・
これは面倒くさそうだ・・・というわけでもなかった。
上から順番に説明すると、
  • 鍵の名前
  • 鍵のパスワード
  • パスワード確認
  • 鍵の有効期限(年)
  • 名前
  • 会社での所属部署(今回はitan2929で済ませた)
  • 会社名 (今回はitan2929で済ませた) 
  • 所在地
  • 都道府県
  • 国番号(81もしくはjp)
と、これだけ。至って簡単。
でも、こんな軽々しく言っているが、この鍵が無いと投稿するときに弾かれる。タイヘンダー