お知らせと画力修行用に開設しました。よろしくお願いします!
function OnCollisionEnter(info : Collision) {
if (info.gameObject.tag == "test"){//当り判定を名前で取る
var hensuu=this.transform.localEulerAngles.y;//角度代入
var hensuu2=info.transform.position.z;//Z座標代入
}
}
■タグで当り判定を取る,thisで自分の情報、infoで相手の情報をとれるので、色々使えると思う。
function OnTriggerEnter(other : Collider) {
if (other.gameObject.tag == "test"){//当り判定を名前で取る
}
}
■トリガーでもほぼ同じ、トリガーにチェックを忘れずに。
if (info.gameObject.tag == "test"){//当り判定を名前で取る
var hensuu=this.transform.localEulerAngles.y;//角度代入
var hensuu2=info.transform.position.z;//Z座標代入
}
}
■タグで当り判定を取る,thisで自分の情報、infoで相手の情報をとれるので、色々使えると思う。
function OnTriggerEnter(other : Collider) {
if (other.gameObject.tag == "test"){//当り判定を名前で取る
}
}
■トリガーでもほぼ同じ、トリガーにチェックを忘れずに。
PR
var speed = 0.5;
public var target : Transform;
function Update () {
var relativePos = target.position - transform.position;
var rotation = Quaternion.LookRotation(relativePos);
transform.rotation =
Quaternion.Slerp (transform.rotation, rotation, Time.deltaTime * speed);
}
//targetに任意のオブジェクトを割り当てるとその方向を向くようになる。
■このスクリプトでオブジェクトのほうを向くがどの軸でも向いてしまうので、y軸だけ向かせたい
時は違う書き方をする。
public var target : Transform;
function Update () {
var relativePos = target.position - transform.position;
relativePos.y=0;
if (Vector3.Dot(relativePos,relativePos) < 1) { return; } // EPSILONはx,zの差が非常に小さいときにQuaternionが破綻しないような値
var rotation = Quaternion.LookRotation(relativePos);
transform.rotation =Quaternion.Slerp (transform.rotation, rotation, Time.deltaTime * 0.5);
}
public var target : Transform;
function Update () {
var relativePos = target.position - transform.position;
var rotation = Quaternion.LookRotation(relativePos);
transform.rotation =
Quaternion.Slerp (transform.rotation, rotation, Time.deltaTime * speed);
}
//targetに任意のオブジェクトを割り当てるとその方向を向くようになる。
■このスクリプトでオブジェクトのほうを向くがどの軸でも向いてしまうので、y軸だけ向かせたい
時は違う書き方をする。
public var target : Transform;
function Update () {
var relativePos = target.position - transform.position;
relativePos.y=0;
if (Vector3.Dot(relativePos,relativePos) < 1) { return; } // EPSILONはx,zの差が非常に小さいときにQuaternionが破綻しないような値
var rotation = Quaternion.LookRotation(relativePos);
transform.rotation =Quaternion.Slerp (transform.rotation, rotation, Time.deltaTime * 0.5);
}
untiy3d 変数メモ
untiyの変数は型を宣言したほうが軽くなるらしいので、宣言しておく。
var hausuu : float = 10.00;
■実数の型、少数点まで計算する時はこれを宣言
var hausuu : int = 10;
■整数の型 整数の型はコッチを宣言
var hausuu : boolean = false;
var hausuu : boolean = true;
■正か誤のどちらかの選ぶ時に便利な型
var Prefab : GameObject;
■ゲームオブジェクトを登録する、登録したゲームオブジェクトから座標とか取るとき便利。
var Prefab : Transform;
■ゲームオブジェクトの座標がとれる。色々使える。
static var hausuu : int = 10;
■staticを付けるとグローバル変数になる、違うファイルからもファイル名+ドットでアクセス出来る
色々サイトを見てると多様はあまりよくないみたい。
private var hausuu : int = 10;
■ privateを付けるとスクリプトから見えなくなる。内部で使うときは、付けたほうが見やすい。
var a : Vector3 = Vector3(0, 0, 0);
this.transform.position = a;
var a: Vector3;
a.x = 1;
a.y = 1;
a.z = 1;
■3軸の座標を登録できる。ドットでプロパティにアクセスしてX軸だけでもアクセスできる。
var j_cnt = new int[7];
j_cnt[0] =1;
j_cnt[1] =1;
j_cnt[2] =1;
j_cnt[3] =1;
j_cnt[4] =1;
j_cnt[5] =1;
j_cnt[6] =1;
■配列で変数を登録するときは、newを使うといいみたい。
//ターゲットobjを登録する
var objNumber : int=10;//ターゲットobj数
//配列の数を宣言
var obj : GameObject[];
//配列化
obj = new GameObject[objNumber];
//クラス生成
obj[0]=GameObject.Find("target0");
obj[1]=GameObject.Find("target1");
obj[2]=GameObject.Find("target2");
obj[3]=GameObject.Find("target3");
obj[4]=GameObject.Find("target4");
obj[5]=GameObject.Find("target5");
obj[6]=GameObject.Find("target6");
obj[7]=GameObject.Find("target7");
obj[8]=GameObject.Find("target8");
obj[9]=GameObject.Find("target9");
■ GameObjectを配列で登録する書き方、たぶん当たってると思うけど自信は無い。
var hensuu=kansuu(1000) ;
print(hensuu);
function kansuu(hensuu2){
if(hensuu2==100){
return hensuu2;
}
}
■関数のサンプル、スクリプトが長くなるなら関数にしといたほうが後で見やすくなると思う
Debug.Log("test");
■おまけ、ログをだす。
untiyの変数は型を宣言したほうが軽くなるらしいので、宣言しておく。
var hausuu : float = 10.00;
■実数の型、少数点まで計算する時はこれを宣言
var hausuu : int = 10;
■整数の型 整数の型はコッチを宣言
var hausuu : boolean = false;
var hausuu : boolean = true;
■正か誤のどちらかの選ぶ時に便利な型
var Prefab : GameObject;
■ゲームオブジェクトを登録する、登録したゲームオブジェクトから座標とか取るとき便利。
var Prefab : Transform;
■ゲームオブジェクトの座標がとれる。色々使える。
static var hausuu : int = 10;
■staticを付けるとグローバル変数になる、違うファイルからもファイル名+ドットでアクセス出来る
色々サイトを見てると多様はあまりよくないみたい。
private var hausuu : int = 10;
■ privateを付けるとスクリプトから見えなくなる。内部で使うときは、付けたほうが見やすい。
var a : Vector3 = Vector3(0, 0, 0);
this.transform.position = a;
var a: Vector3;
a.x = 1;
a.y = 1;
a.z = 1;
■3軸の座標を登録できる。ドットでプロパティにアクセスしてX軸だけでもアクセスできる。
var j_cnt = new int[7];
j_cnt[0] =1;
j_cnt[1] =1;
j_cnt[2] =1;
j_cnt[3] =1;
j_cnt[4] =1;
j_cnt[5] =1;
j_cnt[6] =1;
■配列で変数を登録するときは、newを使うといいみたい。
//ターゲットobjを登録する
var objNumber : int=10;//ターゲットobj数
//配列の数を宣言
var obj : GameObject[];
//配列化
obj = new GameObject[objNumber];
//クラス生成
obj[0]=GameObject.Find("target0");
obj[1]=GameObject.Find("target1");
obj[2]=GameObject.Find("target2");
obj[3]=GameObject.Find("target3");
obj[4]=GameObject.Find("target4");
obj[5]=GameObject.Find("target5");
obj[6]=GameObject.Find("target6");
obj[7]=GameObject.Find("target7");
obj[8]=GameObject.Find("target8");
obj[9]=GameObject.Find("target9");
■ GameObjectを配列で登録する書き方、たぶん当たってると思うけど自信は無い。
var hensuu=kansuu(1000) ;
print(hensuu);
function kansuu(hensuu2){
if(hensuu2==100){
return hensuu2;
}
}
■関数のサンプル、スクリプトが長くなるなら関数にしといたほうが後で見やすくなると思う
Debug.Log("test");
■おまけ、ログをだす。
いままで調べたuntiyのスクリプトを忘れそうなので自分用にメモしておく。
基本、デザイナーなので間違ってたらごめんなさい。
キャラクターコントローラー用のスクリプトです。これで基本的な動きは出来るはず。
#pragma strict
var jumpSpeed : float = 8.0;//ジャンプ変数
var gravity : float = 20.0;//重力変数
private var velocity : Vector3;//呪文キャラの移動量を格納移動
private var moveDirection : Vector3 = Vector3.zero;//呪文キャラの移動量を格納移動
function Update() {
var inputH : boolean = false;
var inputV : boolean = false;
var controller : CharacterController = GetComponent(CharacterController);//呪文キャラの移動量を格納移動
moveDirection = Vector3.zero;//呪文キャラの移動量を格納移動
if (controller.isGrounded) {//地面の判定してくれる
if (Input.GetButtonDown("jump")) {animation.CrossFade("pjump");
velocity.y = jumpSpeed;
animation.Play("pjump");
}
}
if (Mathf.Abs(Input.GetAxisRaw("Horizontal")) > 0.5) {
//左右キーと同様に小さい値の場合は入力無しとして扱っています。
inputH = true;
transform.eulerAngles.y += Input.GetAxis("Horizontal")*Time.deltaTime*100;
}
if (Mathf.Abs(Input.GetAxisRaw("Vertical")) > 0.5) {
//上下キーで前進、後進をさせる処理を行っています。
inputV = true;
moveDirection += transform.forward*Input.GetAxis("Vertical")*2;
}
controller.Move(moveDirection*Time.deltaTime);//最終的に確定した移動量を適用。
//キー入力が有ったら walk のアニメーション、無かった場合は idle のアニメーションを再生。
if (inputH || inputV) {
animation.CrossFade("walk");
} else {
animation.CrossFade("idle");
}
velocity.y -= gravity * Time.deltaTime;//呪文重力
controller.Move(velocity * Time.deltaTime);//呪文キャラの移動量を格納移動
}
基本、デザイナーなので間違ってたらごめんなさい。
キャラクターコントローラー用のスクリプトです。これで基本的な動きは出来るはず。
#pragma strict
var jumpSpeed : float = 8.0;//ジャンプ変数
var gravity : float = 20.0;//重力変数
private var velocity : Vector3;//呪文キャラの移動量を格納移動
private var moveDirection : Vector3 = Vector3.zero;//呪文キャラの移動量を格納移動
function Update() {
var inputH : boolean = false;
var inputV : boolean = false;
var controller : CharacterController = GetComponent(CharacterController);//呪文キャラの移動量を格納移動
moveDirection = Vector3.zero;//呪文キャラの移動量を格納移動
if (controller.isGrounded) {//地面の判定してくれる
if (Input.GetButtonDown("jump")) {animation.CrossFade("pjump");
velocity.y = jumpSpeed;
animation.Play("pjump");
}
}
if (Mathf.Abs(Input.GetAxisRaw("Horizontal")) > 0.5) {
//左右キーと同様に小さい値の場合は入力無しとして扱っています。
inputH = true;
transform.eulerAngles.y += Input.GetAxis("Horizontal")*Time.deltaTime*100;
}
if (Mathf.Abs(Input.GetAxisRaw("Vertical")) > 0.5) {
//上下キーで前進、後進をさせる処理を行っています。
inputV = true;
moveDirection += transform.forward*Input.GetAxis("Vertical")*2;
}
controller.Move(moveDirection*Time.deltaTime);//最終的に確定した移動量を適用。
//キー入力が有ったら walk のアニメーション、無かった場合は idle のアニメーションを再生。
if (inputH || inputV) {
animation.CrossFade("walk");
} else {
animation.CrossFade("idle");
}
velocity.y -= gravity * Time.deltaTime;//呪文重力
controller.Move(velocity * Time.deltaTime);//呪文キャラの移動量を格納移動
}