日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

siki学院_Unity初级案例_愤怒的小鸟_学习笔记1/3

發布時間:2024/3/24 编程问答 42 豆豆
生活随笔 收集整理的這篇文章主要介紹了 siki学院_Unity初级案例_愤怒的小鸟_学习笔记1/3 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

說明:本次學習開始于2018年9月23日,至9月26日已看完全部教學視頻,并已基本完成該案例的制作,歷時四天。本文檔為我在學習過程中,通過記事本記錄的學習過程,對于該游戲案例的制作過程并不十分詳盡,不作為教程使用,僅用于自己學習參考,記錄于此,聊表心意。

2018年9月23日

siki學院官網在線視頻 憤怒的小鳥 Unity2017.3.0f3開發 講師lvy

一 新建工程 2d 在d盤的users目錄下

★★2d3d場景的切換,更改相機的【projection】屬性(有透視和正交兩個),在編輯器主菜單>項目設置>編輯器>中的模式改為2/3d ?即可。

★★新建場景,新建三個場景,分別為Loading,level,game。

★★導入資源,圖片和音頻等

★★圖集的處理,更改圖片模式【sprite mode】(改為multiple),編輯,將單張圖集裁切,有編號,應用。

★★圖片層級關系處理,在游戲物體上,點擊【sorting layer】>添加player層,將主角設置為player層,通過【order in layer】的數值來調節顯示層級關系。

★★給小鳥添加【spring joint 2d】的彈簧關節組件(其用于連接兩個剛體組件像彈簧一樣運動),系統自動添加【rigidbody 2d】的2d剛體組件。
給右邊彈弓添加2d剛體,設置類型為靜態(不會受重力影響,不會掉落)

再看spring joint 2d組件,其中【connected rigid body】為連接的另一個2d剛體物體,
另有是否自動/設置連接的錨點,
另有是否自動/設置連接的距離,
另下方有【frequency】頻率屬性(其值為彈性系數,值越大約不易被拉長),
另有【Damping ratio】屬性為阻尼系數(范圍0-1值越大阻力越大)。

★★給小鳥加2d碰撞體(圓形的即可)然后添加腳本,實現鼠標拖拽跟隨運動。

函數:private void OnMouseDown(){} ?鼠標按下
? ? ? private void OnMouseUp(){} ? ?鼠標抬起觸發函數執行。

在update中位置跟隨鼠標的實現

transform.position = Camera.main.ScreenToWorldPoint(Input.mousePosition);

將鼠標在屏幕上的點擊位置(坐標原點為屏幕左下角)裝換為相應的世界坐標位置(原點為屏幕中心),但此轉換后的位置會被加上一個主相機的z軸坐標值,在這里是-10,故還需要減去。

transform.position += new Vector3(0,0,-Camera.main.transform.position.z);

★★最大距離限制(判斷與值計算)

在right上建立一個空子物體,移動到彈簧關節點,在代碼中此點為距離基準點,當鼠標拖動的位置超出限定值maxDis時,小鳥位置將保持方向,距離為最大距離。實現如下

if (Vector3.Distance(transform.position,rightPos.position) > maxDis) {
? ? Vector3 pos = transform.position - rightPos.position;
? ? pos = pos.normalized * maxDis;
? ? transform.position = pos + rightPos.position;
}

說明,在鼠標按下移動的條件下,判斷鼠標當前位置是否超過最大限制,如果超過,則先獲得該方向(物體當前位置減去基準點),方向單位化再乘以最大距離得到該方向向量,物體限制后的位置為基準位置加上方向向量。完成。

★★小鳥飛出(抬起鼠標時的剛體和彈簧組件的設置)

思路是在代碼中獲得其剛體組件和2d彈簧組件,

在鼠標按下時,將剛體組件屬性設置為【Kinematic】(小鳥默認狀態為【dynamic】動力學的,會受力的影響,改為Kinematic后,受到transform影響,不受力影響)代碼(rg.isKinematic = true;),

在鼠標抬起時,先關閉Kinematic屬性,代碼(rg.isKinematic = false;),此時小鳥將受到力的影響,

在0.1秒后,將2d彈簧組件關閉,此過程為,在這0.1秒中受到彈簧的力影響,并已經有了運動趨勢,0.1秒結束后,小鳥只受2d剛體的作用,在先前的運動趨勢下,飛出。代碼如下:

Invoke("Fly",0.1f);
? ? private void Fly() {
? ? ? ? sp.enabled = false;
? ? }

關于Invoke()函數的調用,兩個參數,第一個為調用的函數(string),第二個為延遲的時間(float)。


★★背景場景搭建(圖集的操作)

同樣的圖集剪切操作,剪切不好的可以自己調整,Ctrl+D可以復制,小鳥的剛體組件中,有【angular drag】屬性,表示角阻力,增大其值,使小鳥不會旋轉太快,運動時會逐漸停止,起到類似于空氣阻力的效果。

★★小豬的基礎設置(碰撞/死亡/受傷的框架)

添加剛體組件(設置角阻力為2),添加球形碰撞盒。添加代碼。
首先介紹兩個碰撞函數:

? ? private void OnCollisionEnter2D(Collision2D collision) {
//碰撞檢測
? ? }
碰撞條件,兩個物體都是剛體和碰撞體,碰撞后會發生反彈
? ? private void OnTriggerEnter2D(Collision2D collision) {
//觸發檢測
? ? }
觸發條件,兩個物體都是碰撞體,其中一個是剛體,其中一個物體勾選觸發器。碰撞后不反彈(如有誤以后勘正)。

小豬受傷/死亡原理,給小豬一個最小速度(觸發受傷的相對速度)和最大速度(觸發死亡的相對速度),在碰撞函數中,使用if語句判斷執行,分別執行死亡的操作和受傷的操作。代碼如下:

? ? private void OnCollisionEnter2D(Collision2D collision) {
? ? ? ? if (collision.relativeVelocity.magnitude > maxSpeed) {
? ? ? ? ? ? Destroy(gameObject);
? ? ? ? } else if (collision.relativeVelocity.magnitude > minSpeed) {
? ? ? ? ? ? render.sprite = hurt;
? ? ? ? }
? ? }

其中,render組件需要先聲明,并在awake函數中得到,受傷的圖集由public屬性從外部賦值得到。

★★給彈弓畫線

彈弓左右枝上分別建立一個畫線點,并在左右枝上分別添加【Line Renderer】組件,該組件,給材質添加材質球,在顏色屬性處改變顏色,在【whdth】屬性處改變寬度。

畫線的操作在小鳥的代碼中,聲明兩個公共位置變量(在編輯器賦左右枝的畫線點),聲明兩個公共畫線組件(同樣在編輯器將左右兩枝賦給他),寫畫線函數。放在isClick判斷句內。

? ? void Line() {
? ? ? ? rightLine.SetPosition(0,rightPos1.position);
? ? ? ? rightLine.SetPosition(1,transform.position);
? ? ? ? leftLine.SetPosition(0,leftPos1.position);
? ? ? ? leftLine.SetPosition(1,transform.position);
? ? }

其中,setposition為畫線的兩個點,用法如上,一目了然。

★★小豬死亡特效

先制作爆炸特效的預制體,選中幾個圖集,拖到場景目錄上,自動彈出動畫制作的窗口,會自動生成一個物體,上面掛載動畫狀態機,動畫狀態機綁定一個動畫,該動畫是圖集動畫,選中該物體,按Ctrl+6,打開動畫編輯器,可以對圖集動畫進行編輯修改(如更換添加刪除圖片等),在這里對特效添加一個控制代碼,寫上一個銷毀函數,在動畫編輯窗中在最后一幀添加事件,為其銷毀函數,這樣,在動畫播放完之后,就會自己銷毀掉,動畫物體制作好后,制作成預制體。

實現爆炸特效,在pig的代碼中先聲明公共屬性gameobject(在外面賦值預制體public GameObject boom;),寫一個處理死亡的函數,生成爆炸的預制體,在死亡處調用。

? ? void PigDead() {
? ? ? ? Instantiate(boom,transform.position,Quaternion.identity);
? ? }

函數參數說明,生成的游戲對象(通過預制體賦值),生成時的位置,生成時的旋轉方向。不再贅述。

分數特效,分數圖集制作成預制體(這個預制體就是一個圖片),在pig的死亡處添加生成該預制體的語句即可。

? ? ? ? GameObject Score = Instantiate(pigScore,transform.position + new Vector3(0,0.4f,0),Quaternion.identity);
? ? ? ? Destroy(Score,1f);

其中,為了讓生成位置在豬的上方,銷毀也是在1秒之后銷毀。

總結

以上是生活随笔為你收集整理的siki学院_Unity初级案例_愤怒的小鸟_学习笔记1/3的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。

主站蜘蛛池模板: 天天操天天射天天爽 | 免费观看美女裸体网站 | 蜜桃免费在线视频 | 日本视频www色 | 偷自在线 | 国产美女91呻吟求 | 久久久久久久9999 | 91麻豆精品国产午夜天堂 | 草久av| 亚洲女人天堂色在线7777 | 欧美影院一区二区 | 伊人成人在线视频 | 青草青青视频 | 狠狠干导航 | 精品国产免费无码久久久 | 日韩免 | 一级特级黄色片 | 婷婷精品在线 | 久久视频在线播放 | 亚洲欧美一区二区三区在线 | 久久极品| 国产精品青青草 | 日韩在线一二 | 国产草草视频 | 日本a视频在线观看 | 欧美人妻日韩精品 | 国产精品一区在线免费观看 | 久久精品视频6 | 亚洲国产精品久久久久爰性色 | 午夜久久视频 | 久久青青草视频 | av资源在线免费观看 | 8x8ⅹ国产精品一区二区 | 天美视频在线观看 | 五月婷婷色丁香 | 人人射人人干 | 婷婷色综合网 | а√中文在线资源库 | 亚洲av成人精品一区二区三区在线播放 | 蜜臀久久99精品久久久无需会员 | 日本老妇性生活 | 德国老妇性猛交 | 中文字幕在线观看日本 | 色丁香在线| 年下总裁被打光屁股sp | 欧美一区免费 | 日韩高清一级 | 韩国三级在线视频 | 视频一区二区在线 | 手机在线精品视频 | 久久艹这里只有精品 | 国产午夜亚洲精品午夜鲁丝片 | 日本免费在线观看 | 国内精品嫩模av私拍在线观看 | 无码人妻精品一区二区三区99v | 草久久久 | 9l视频自拍蝌蚪9l视频成人 | 精品777 | 欧美高清一区二区三区四区 | 国产在线观看成人 | 双性懵懂美人被强制调教 | 狠狠香蕉| 凸凹人妻人人澡人人添 | 亚洲免费三区 | 一级成人免费 | 亚洲私人影院 | 欧美国产在线视频 | 九热视频在线观看 | 久久久久无码精品 | 成人毛片观看 | 亚洲色图1 | 一区二区三区在线视频播放 | 亚洲成人av片 | av老司机在线播放 | 亚洲天堂免费在线 | 久久精品久久久精品美女 | 少妇性高潮视频 | 黄色国产一区二区 | jlzzjlzzjlzz亚洲人| 欧美日韩在线观看一区 | 国产www免费观看 | 国产在线aaa| 亚洲资源在线观看 | 一区二区日韩 | www.奇米.com| 久久精品一区二 | 影音先锋成人资源网 | 欧美三级理论片 | 欧美黑人疯狂性受xxxxx野外 | 国产69精品麻豆 | 日日摸天天爽天天爽视频 | 伊人国产女| 亚洲痴女 | 成人欧美在线 | 在线日韩精品视频 | 欧美狠狠 | 免费色片 | 一区二区免费 | 亚洲国产精品女人久久久 |