CharacterControllerとRigidbody

Rigidbodyはvelocityで動かしても2フレ程度
CharacterControllerより反応が遅い
こういう場合はFixedUpdate関数を使うと同じタイミングで反応した

衝突判定を一瞬無くす

例えばhashigoとmyCharaのレイヤーを作って
それぞれのオブジェクトに振り分けてから
コルーチンに下記のように書く

//hashigoレイヤーの番号を変数layerHashigoに入れる
int layerHashigo = LayerMask.NameToLayer("hashigo");
//マイキャラのレイヤーの番号を変数layerMyCharaに入れる
int layerMyChara = LayerMask.NameToLayer("myChara");
//Physics.IgnoreLayerCollisionで2つのレイヤーのコライダーの衝突判定を無効化
Physics.IgnoreLayerCollision(layerMyChara, layerHashigo,true);
//3秒待ってstage0をリロード
yield return new WaitForSeconds(0.5f);
//Physics.IgnoreLayerCollisionで2つのレイヤーのコライダーの衝突判定を無効化
Physics.IgnoreLayerCollision(layerMyChara, layerHashigo,false);

c4dからunityの座標

c4dからunityにimportする時のサイズ
c4dでcubeを100cmで作るとunityのデフォルトcubeと同じ大きさになる

position
c4dの100cmはunityの1

タグをremoveして設定し直してもビルドしたらエラー

タグを一回removeしてから名前を変えて再度設定しても
unity上では出来るけどビルドしてプレイしたらエラーになったりした

一回removeしたらUndefinedっていうのになるっぽい。
unity再起動で直る時もあるって海外の掲示板で誰かが言ってたけど、
上手くいかなかった。

強引な解決策として一回全部packageにして
新しいプロジェクトにimportすることで解決したけど
根本的な解決になってない。
どっかにキャッシュされてるんだろうけど
また時間がある時に調べたいと思う。

敵がマイキャラを等速で追いかけるスクリプト

考え方
このスクリプトは敵のほうにつけるとしたら
publicにマイキャラのオブジェクトを入れて
マイキャラの位置を取得
マイキャラから敵の位置を引いて距離を出す
その距離をnormalizedで正規化して
その値を
0.01f以上は1
ー0.01f以下は-1
にして自分(敵の)positionに足す

ちなみにこれはx軸でしか追いかけてこない

//マイキャラのオブジェクトを取得
public GameObject myCharaObj;
//マイキャラと敵の距離を入れる変数
private Vector3 difference;


//マイキャラを追いかける処理
//マイキャラと自身(敵)の位置の差(距離)を取ってnormalizedで正規化して変数differenceに入れる
difference = (myCharaObj.transform.position - this.transform.position).normalized;

//もし自身(敵)のxとマイキャラのxの距離が0.01以上の場合
if (difference.x >= 0.01f)
{
        //difference.xを1にする
        difference.x = 1.0f; 
}
//もし自身(敵)のxとマイキャラのxの距離が-0.01以下の場合
else if (difference.x <= -0.01f)
{
        //difference.xを-1にする
        difference.x = -1.0f;
}
//それ以外は0にする
else
{
        difference.x = 0.0f;
}
    //自身(敵)の位置にdifference.xを除算したものを毎フレーム足す
    //これで等速でキャラの位置まで敵が移動する
    transform.position = new Vector3(transform.position.x + difference.x/15, transform.position.y, transform.position.z);

characterController同士が衝突すると乗り上げてしまう場合

edit > projectSetting > physicsで
乗り上げたくないキャラ同士を無効にする

triggerは違うオブジェクトで行う

列挙

inspectorで敵のタイプを指定してタイプごとに違う処理をする場合

//列挙するタイプを指定
public enum type
{
    teki1, teki2
}
//変数に列挙で指定した値を入れる
public type tekiType;


update関数でチェック

//tekiTypeがteki2の場合
if (tekiType == type.teki2)
{
    print(hoge);
}