1。把player幀動畫直接拖入到scene中,unity會自動生成改物體的預設idel動畫。
2。選定遊戲物體,ctrl+6 開啟animation,可以手動新增幀動畫。
3。在animator中,控制動畫切換。在parameters中新增條件,右鍵動畫,make transition 建立轉換,記得has exit time取消勾選,
4。指令碼中。在該遊戲物體指令碼中 實現條件控制。
先宣告animator private animator animator;
在awake中初始化,animator=getcomponent();
在if條件裡完成控制。animator.setfloat(" ", ); or animator.setbool(" ",true);
1。首先給人物新增rigidbody2d。 在指令碼中得到該遊戲物體。
宣告 private rigidbody2d rigidbody;
awake()中初始化,rigidbody2d=getcompont();
2。人物移動。
水平移動。
定義乙個速度常量 public float player_velocity=50;
水平方向的力。float h=input.getaxis("horizontal"); h<0,向左。h>0,向右。
if(h>0.05f) rigidbody2d.addforce(vector2.right*player_velocity); 轉向 transform.localscale=new vector(1,1,1);
if(h<-0.05f) rigidbody2d.addforce(-vector2.right*player_velocity); 轉向 transform.localscale=new vector(-1,1,1);
跳躍。垂直速度,public float jump_velocity=50;
得到人物的速度。 vector2 velocity=rigidbody2d.velocity;
按下空格跳躍 if(input.getkeydown(keycode.space)) velocity.y=jump_velocity; rigidybody2d.velocity=velocity;
3。地面,牆壁區分。
首先為各個物體新增boxcollider2d.和標籤tag (player,ground,wall)
新增條件 bool isground = false; bool iswall = false;
碰撞檢測。void oncollisionenter2d(collision collision)}
void oncollisionexit2d(collision collision) }
4。人物在牆上的操作
首先判斷是否在牆上滑行。bool isslider;
if(isground==true || iswall=false) isslider=false;
人物控制都是在 isslider==false;
碰到牆轉向 void changedir() }
5。相機跟隨
獲得人物位置 public transform target;
獲得相機位置vector3 pos=transform.position;
位置差:pos.x=target.position-transform.position;
相機位置:transform.position=pos;
6。敵人控制**向,跟隨)
當角色與敵人距離小於某個數值,敵人開始朝著角色移動。
設定乙個臨界距離 public float attackdistance=15;
得到角色位置。playertransform=gameobject.findgameobjectwithtag("player").transform;
距離差:float distance=vector3.distance(playertransform,position-transform.position);
判斷if(distance
移動:vector3 dir=playertransform.position-transform.positon;
transform.position=dir.normalize*enemyspeed*time.deltatime+transform.position;}
在相機中新增乙個元件audiosource。
為相機新增乙個指令碼 aduiomanager
用單利模式
public static audiomanager _instance;
private audiosource audio;
public audioclip jumpaudio;
初始化 void awake()=> _instance=this;
audio=getcomponent();
呼叫方法:public void playjumpaudio()
使用方法 :audiomanager._instance.playjumpaudio();
ps.trail render 新增頭巾
UNITY 跑酷學習2
今天又看了知乎,又看到了學習方法,裡面提到意志力的重要性,以及有效學習的概念,我看到了裡面說,寫部落格能增強我的意志力,所以我今天來將昨天的工作新增到部落格,算一次積累,訓練意志力的機會,以及熟悉unity 3d的機會。昨天主要實現了road的自動產生,以及人物運動的碰撞機制,以及簡單的ui的處理。...
unity 跑酷遊戲開發筆記(二)
2014.9.7 今天要做道路無限迴圈,這樣就可以實現基本的跑酷了。我這裡建立了乙個cube 把這個cube拉長。這樣就可以成為乙個臨時跑道的。在cube裡面有兩個子物體。location這個是乙個空物體。這個物體是要放到cube的一邊的最前面。目的是可以在這個物體的座標上生成下一段跑道,後面的ju...
海賊跑酷 跑酷類遊戲 原始碼解析
原始碼目錄,如下 引擎 cocos2.2.6 語言 c 這幾個檔案,根據名字 就可以看出來 各個scene就是場景,都是ui堆疊,不細說 主要邏輯,位於 gamescene裡面 地圖使用 titlemap,裡面編輯了 地板,金幣等位置屬性 裡 解析 tmx地 件 然後得出 碰撞區域rect,以及en...