Cinema4Dメモ

Cinema4Dという3DCGソフトに関するメモ書きです。

ニトロモードの実装

2014-06-18 11:06:16 | Unity&Cinema4D

そういうわけで、なんらかのパワーアップアイテムが欲しいってことで、ニトロモードを実装しました。

紫色のボンベを拾って、Pキーを押しながら前進すると、凄まじいパワーで超絶加速しまくりです。

ニトロは10秒間しか持ちません。使用中はトルクが2倍になります。スゲー加速で転倒しまくりング。

ついでに前輪駆動だったのを、後輪駆動に変えたら、ウィリーしてます。

ついでにエンジン回転計であるところのタコメーターのバーグラフも実装しました。

そして、シフトインジケーターも実装しました。これはいつもの切り文字方式では、うまく実装できなかったので、ついにオリジナルフォントまで作ってしまいました。と言っても、1,2,3,4,5,Rの6文字だけですが。

3速オートマになります(笑)。シフトダウン時のブリッピング音も実装したいのぅ。

ニトロモードは、「むずかしいモード」でブンブンハンマーをクリアするのがめちゃむずかしいため、救済措置的に付けてみたんですが、加速はいいんだけど、止まらないのでかなりの確率でそのまま海に落ちます。どうすりゃいいんだよおってことで、ブレーキも作らないとな・・・それと、スピードに対してハンドルの切れ角が多すぎる状態になってしまうので、ハンドルの切れ角も調整しないとな・・・


カメラの切り替え

2014-06-12 11:22:03 | Unity&Cinema4D

いままでは、メインのビューが監視カメラ風のターゲットカメラで、右側に車上の主観ビューと上空から見下ろすビューだったわけですが、キーボードのVキーでこれらのレイアウトを切り替えられるようにしました。

Vキーを一回押すと、車上の主観ビューがメインになります。

もう一回押すと、上空から見たビューがメインになります。

Vキーをもう一回押すと、最初のレイアウトに戻ります。

スクリプトはこんな感じDeath。

ーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーー

using UnityEngine;
using System.Collections;

public class ChangeCamera : MonoBehaviour {

    public int viewPattern = 0;
    GameObject TargetCam;
    GameObject CarCam;
    GameObject TopCam;

    void Awake(){
        TargetCam = GameObject.Find("TargetCamera");
        CarCam = GameObject.Find("CarCamera");
        TopCam = GameObject.Find("TopCamera");
    }

    void Update(){
        //GetKeyUp Vキーでビューを変更
        if(Input.GetKeyUp("v")){
            if(viewPattern < 2){
                viewPattern +=1;
            }
            else if(viewPattern == 2){
                viewPattern = 0;
            }
        }
        //viewChange関数に処理を渡す
        viewChange();
    }

    //viewChange関数
    void viewChange(){
        //Pattern 0(Default)
        if(viewPattern == 0){ 

            TargetCam.GetComponent<Camera>().rect = new Rect(0.0f ,0.0f ,0.7f ,1.0f);
            CarCam.GetComponent<Camera>().rect = new Rect(0.7f , 0.7f , 0.3f , 0.3f);
            TopCam.GetComponent<Camera>().rect = new Rect(0.7f ,0.4f ,0.3f ,0.3f);
        }
        else if(viewPattern == 1){

            TargetCam.GetComponent<Camera>().rect = new Rect(0.7f ,0.4f ,0.3f ,0.3f);
            CarCam.GetComponent<Camera>().rect = new Rect(0.0f ,0.0f ,0.7f ,1.0f);
            TopCam.GetComponent<Camera>().rect = new Rect(0.7f , 0.7f , 0.3f , 0.3f);
        }
        else if(viewPattern ==2){

            TargetCam.GetComponent<Camera>().rect = new Rect(0.7f , 0.7f , 0.3f , 0.3f);
            CarCam.GetComponent<Camera>().rect = new Rect(0.7f ,0.4f ,0.3f ,0.3f);
            TopCam.GetComponent<Camera>().rect = new Rect(0.0f ,0.0f ,0.7f ,1.0f);
        }
    }
}

ーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーー


自己照明シェーダーの利用

2014-06-11 14:32:05 | Unity&Cinema4D

このゲームはライトが一つだけなので、光の当たらない側はスゲー暗くて、寒々しい感じです。

こんなに暗いのはいやなので、自己照明シェーダーに変更してみました。

明るすぎるので、MainColorの色を暗めに調整します。

使える値の範囲は結構狭いです。

他の一般的な方法としては、影なしのライトを複数追加して暗い箇所を照らすというのが考えられます。


テクスチャのベイク

2014-06-03 12:11:47 | Cinema4D設定、操作

UnityのWebPlayerはライトによる影を描画してくれないみたいなので、Cinema4Dのテクスチャの焼成タグの機能を使ってみることにしました。前提条件として、UV編集が完了している必要があります。

オブジェクトに「テクスチャを焼成」タグをつけて、チャンネル毎にベイクして保存し、Photoshop等で既存のテクスチャファイルにレイヤーとして追加して、Cinema4D(BodyPaint)に再度読み込みます。

↓作業前

↓GIで環境光の影響を表現

↓無限遠光源の影

↓アンビエントオクルージョン

↓地面の模様やジャンプ台の影等

↓全部重ねたもの。乗算モードで重ねて、濃度を各レイヤー毎に調整します。

↓Unityのライトによる影よりも奇麗です(^^)

 

 

 

 


ソフト選択

2014-06-03 10:40:38 | Unity&Cinema4D

海に浮かぶゲームの舞台であるところのプラットフォームを作り直したのを機に、地面が単なる平面だとリアルじゃないので、水勾配をつけてあげました。

ソフト選択を使うと、簡単に正確に出来ますね。

 うーむ。いい感じに中央付近が盛り上がってます。