Google Code Prettify

2013年12月12日 星期四

(轉)

Unity 匯入一個有動作的角色,設定位置後仍在原地動。
原因是因為Animator的Apply Root Motion被打勾,所以才在原地動。
GameObject gobj = Instantiate(Walker, new Vector3(vecWalker.x, 0, vecWalker.y), Quaternion.identity) as GameObject;
  gobj.transform.parent = friendLayer.transform;

轉自 

akira32 編程之家 Yahoo

2013年11月19日 星期二

對軸心旋轉

準備任意張圖,各自做成物件,在做一個要當作軸心的物件(或是用空物件代替),並將CODE貼到空物件上。


#pragma strict

var tex:GameObject[] = new GameObject[5];
var speed:int = 40;

function Start () {

for(var i:int =0 ; i {
var x;
var y;
//圆点坐标:(x0,y0)
//半径:r
//角度:a0
//则圆上任一点为:(x1,y1)
//x1   =   x0   +   r   *   cos(ao   *   3.14   /180   )
//y1   =   y0   +   r   *   sin(ao   *   3.14   /180   )

x= 0+ 3*Mathf.Cos(i*72 * 3.14/180);
y= 0+ 3*Mathf.Sin(i*72 * 3.14/180);

tex[i].transform.position = Vector3(x,0,y);

}
}

function Update () {

tex[0].transform.RotateAround(this.transform.position, Vector3.up, speed * Time.deltaTime);
tex[0].transform.LookAt(this.transform);
tex[1].transform.RotateAround(this.transform.position, Vector3.up, speed * Time.deltaTime);
tex[1].transform.LookAt(this.transform);
tex[2].transform.RotateAround(this.transform.position, Vector3.up, speed * Time.deltaTime);
tex[2].transform.LookAt(this.transform);
tex[3].transform.RotateAround(this.transform.position, Vector3.up, speed * Time.deltaTime);
tex[3].transform.LookAt(this.transform);
tex[4].transform.RotateAround(this.transform.position, Vector3.up, speed * Time.deltaTime);
tex[4].transform.LookAt(this.transform);

}

===============================================================
成果
 物件就會對著設定的軸心(在這裡是空物件)做旋轉了。








2013年11月16日 星期六

unity點擊特效

最近同事提到有的遊戲點下去就會出現一個類似水波的效果,問說要怎麼實現。回家就稍微做了一下。

準備一個特效(會自動銷毀的特效),把SCRIPT放到鏡頭上,並且把特效拖到MyEffect上

#pragma strict
//effect
var MyEffect:GameObject ;
var hit : RaycastHit;
var cooldown : float;
private var effect:GameObject;
private var g_camera : Camera;
private var g_camTransform : Transform;

function Awake()
{
   g_camera = Camera.main;
   g_camTransform = g_camera.transform;
}

function Update ()
{
if(cooldown>0){cooldown-=Time.deltaTime;}
var mousePos = Input.mousePosition;

var ray = Camera.main.ScreenPointToRay (Input.mousePosition);
var vecMousePosition = g_camera.ScreenToWorldPoint(Vector3(mousePos.x, mousePos.y,1));
if(Input.GetMouseButton(0) &&cooldown<=0)
{
                 //生成特效
effect=Instantiate(MyEffect, vecMousePosition , Quaternion.identity);
cooldown=0.15;
}
}




=================================================
成果
 OK 這樣子點擊的時候就會出現特效了。
範例



2013年11月14日 星期四

Unity Shader學習筆記(1)

最近看著書學寫Unity的Shader,順便寫一下筆記
兩個顏色混合

Shader "Custom/ex1" {
Properties {
_EmissiveColor ("ColorA", Color) = (1,1,1,1)
_AmbientColor ("ColorB", Color) = (1,1,1,1)
_PowerValue ("Power", Range(0,10)) = 2.5
}
SubShader {
Tags { "RenderType"="Opaque" }
LOD 200

CGPROGRAM
#pragma surface surf Lambert

float4 _EmissiveColor;
float4 _AmbientColor;
float _PowerValue ;

struct Input {
float2 uv_MainTex;
};

void surf (Input IN, inout SurfaceOutput o) {
float4 c;
c = pow((_EmissiveColor + _AmbientColor), _PowerValue );
o.Albedo = c.rgb;
o.Alpha = c.a;
}
ENDCG
}
FallBack "Diffuse"
}


=============================================================
成果