欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

Unity3D攝像機(jī)跟隨小球移動(dòng)而不旋轉(zhuǎn)的設(shè)置方法

  發(fā)布時(shí)間:2016-03-16 14:40:16   作者:佚名   我要評(píng)論
Unity3D中怎樣讓攝像機(jī)跟隨小球移動(dòng)而不旋轉(zhuǎn)?Unity3D中使用攝像機(jī)拍小球,它在移動(dòng)的過(guò)程中,自身是不斷旋轉(zhuǎn)的,所以,攝像機(jī)也會(huì)跟著一起旋轉(zhuǎn),怎么讓攝像機(jī)不轉(zhuǎn)呢?請(qǐng)看下文詳細(xì)介紹

在Unity中,我們經(jīng)常需要讓攝像機(jī)跟隨一個(gè)物體移動(dòng),如果物體是水平移動(dòng)的,而自身沒(méi)有發(fā)生任何的偏轉(zhuǎn),那么我們可以直接將攝像機(jī)放在該物體下。這樣就可以實(shí)現(xiàn)它們一起移動(dòng)了,但是,如果移動(dòng)的物體是圓的,比如小球,它在移動(dòng)的過(guò)程中,自身是不斷旋轉(zhuǎn)的,所以,攝像機(jī)也會(huì)跟著一起旋轉(zhuǎn),那么我們看到得畫(huà)面將是天旋地轉(zhuǎn)的,很明顯,這樣是不行的。那么我們?cè)撊绾握_的讓攝像機(jī)跟隨小球一起運(yùn)動(dòng)呢?

1、如圖,我們已經(jīng)給小球添加了移動(dòng)的腳本,小球是Sphere,現(xiàn)在想實(shí)現(xiàn)的是讓攝像機(jī)MainCamera跟隨小球一起運(yùn)動(dòng)。

2、我們先來(lái)看看上面說(shuō)的不可行的方法:如圖,直接將"Main Camera"拖動(dòng)到"Sphere"的子目錄,即讓攝像機(jī)成為小球的子物體,這樣,兩個(gè)對(duì)象就可以一起運(yùn)動(dòng)了,那么我們來(lái)看看到底可不可行。

3、我們記錄一開(kāi)始兩物體的位置,此時(shí)讓小球向右移動(dòng),此時(shí),我們從這個(gè)視角看去,的確是一起運(yùn)動(dòng)了,但是,這不是我們?cè)谟螒蚶锩婵吹降靡暯?,我們看到的是攝像機(jī)的視角。

4、運(yùn)行游戲后,我們可以看到,畫(huà)面是"天旋地轉(zhuǎn)"的。所以,這種方法對(duì)于自身還在運(yùn)動(dòng)的物體來(lái)時(shí),是不可行的。那么下來(lái)我們說(shuō)說(shuō)正確的做法。

正確的方法:

1、 我們要實(shí)現(xiàn)的是讓相機(jī)跟隨物體一起移動(dòng),其實(shí)就是讓相機(jī)和小球的相對(duì)位置不變即可。這里我們需要使用代碼來(lái)控制兩個(gè)對(duì)象之間的相對(duì)位置,使其保持不變。

首先,在MainCamera里面創(chuàng)建一個(gè)C# 腳本。如圖所示,點(diǎn)擊MainCamera,在右邊屬性欄最下方,選擇 AddComponent。然后,在彈出的選項(xiàng)里拉到最下方,選擇NewScript,然后創(chuàng)建一個(gè)C#腳本,命名為 Move。此時(shí)可以看到,我們新添加的一個(gè)C#腳本。

2、然后,開(kāi)始寫(xiě)代碼了。我們打開(kāi)這個(gè)C# 腳本,我們要讓攝像機(jī)和小球的相對(duì)位置保持不變,那么就必須獲取到小球的位置。在Unity里,我們用transform 組件來(lái)獲取一個(gè)物體的位置。所以先定義一個(gè)transform組件,命名為bolltransform,選擇保存。

3、此時(shí),我們返回Unity,在MainCamera的C#腳本里,多了一項(xiàng)。這里就是我們要添加的組件,可以看到這里還沒(méi)有添加組件。我們要獲取的是小球的位置,所以我們需要添加Sphere:將Sphere用鼠標(biāo)拖進(jìn)這個(gè)選擇框即可。這樣,我們就成功的將攝像機(jī)和小球關(guān)聯(lián)了起來(lái)。

4、我們點(diǎn)擊小球,在右邊的屬性欄里可以看見(jiàn)小球的一個(gè)transform屬性,只要小球一開(kāi)始運(yùn)動(dòng),那么它的transform屬性的值就被傳遞到了相機(jī)的bolltransform那里。我想,這里大家都是非常明白的。

5、我們已經(jīng)獲取到了小球的位置,要使得它們之間的位置不變,也就是說(shuō)小球和攝像機(jī)之間初始的偏移量始終不變就可以了。

所以,

1)我們首先要計(jì)算出小球和攝像機(jī)之間的偏移量。我們把偏移量設(shè)為offset,并且計(jì)算出offset。用代碼定義出來(lái),因?yàn)槠屏渴侨S空間,所以我們用到Vector3。繼續(xù)在c#腳本里寫(xiě)。如圖所示:

2)寫(xiě)出它們之間的關(guān)系,即 初始偏移量=攝像機(jī)的位置-小球的位置。用代碼表示出來(lái)如下圖所示:

3)我們要通過(guò)此公式確定攝像機(jī)的位置,即:小球的位置+偏移量就等于攝像機(jī)的位置。而小球是不停地在動(dòng)的,我們要不停的更新計(jì)算攝像機(jī)的位置,而在unity里,update方法是不停地執(zhí)行的。所以這一步的公式需要寫(xiě)在 Update方法里面就可以了。在update里面寫(xiě)上:transform.postion=offset+bolltransform.postion ;

6、這樣,整個(gè)過(guò)程就完成了,我們保存,開(kāi)始運(yùn)行,可以看到,現(xiàn)在攝像機(jī)看到的畫(huà)面也就一起跟著小球運(yùn)動(dòng)了。這就是在unity中用代碼控制兩個(gè)對(duì)象,使其距離保持不變的方法。我想,通過(guò)我這樣的講解,大家應(yīng)該都懂了吧!

注意事項(xiàng):Unity3D 進(jìn)行游戲開(kāi)發(fā)要注意游戲?qū)ο蠛湍_本的關(guān)系,避免混淆不清。

相關(guān)推薦:

unity3D軟件怎么生成exe程序?

unity3d自定義的界面怎么還原到初始化狀態(tài)?

相關(guān)文章

  • unity3d自定義的界面怎么還原到初始化狀態(tài)?

    unity3d自定義的界面怎么還原到初始化狀態(tài)?自己設(shè)置的unity3d界面,但是用著覺(jué)得還沒(méi)有默認(rèn)的界面好用個(gè),想還原成原來(lái)的界面,該怎么設(shè)置呢?下面分享詳細(xì)的設(shè)置方法,很
    2016-02-13
  • unity3D軟件怎么生成exe程序?

    unity3D軟件怎么生成exe程序?初次用U3D的學(xué)者可能有這樣的問(wèn)題,我做好的一個(gè)小游戲,怎么導(dǎo)出成exe的程序呢?下面小編給大家分享下制作過(guò)程,需要的朋友可以參考下
    2015-08-02
  • Unity3D 實(shí)現(xiàn)怪物巡邏、按路線行走操作

    這篇文章主要介紹了Unity3D 實(shí)現(xiàn)怪物巡邏、按路線行走操作,由于之前沒(méi)什么經(jīng)驗(yàn),就只能按照自己的想法很愚笨的實(shí)現(xiàn)的,也算拋磚引玉,如果讀者知道如何更簡(jiǎn)單的實(shí)現(xiàn)方式,
    2014-10-20
  • Unity3D 沖鋒效果、角色拖尾效果

    在本場(chǎng)景用到的拖尾效果可以查看我的另一篇文章,里面有詳細(xì)的介紹,刀光效果來(lái)自 Unity3D Assets 商店,只是把原作者的例子代碼整理了一下,變得非常簡(jiǎn)單實(shí)用的類。
    2014-10-20
  • Unity3D 使用 WWW 加載場(chǎng)景并顯示進(jìn)度條

    這篇文章主要介紹了Unity3D 使用 WWW 加載場(chǎng)景并顯示進(jìn)度條,并附上相關(guān)代碼,有需要的朋友參考下
    2014-10-20
  • Unity3D 預(yù)設(shè)打包的注意事項(xiàng)

    這篇文章主要介紹了Unity3D 打包預(yù)設(shè)的時(shí)候應(yīng)該注意哪些問(wèn)題,非常的實(shí)用,是篇非常不錯(cuò)的文章,希望對(duì)大家能有所幫助
    2014-10-20
  • Unity3D 場(chǎng)景導(dǎo)出成 XML 并解析還原場(chǎng)景

    這篇文章主要介紹了Unity3D 場(chǎng)景導(dǎo)出成 XML 并解析還原場(chǎng)景,中間部分代碼取自互聯(lián)網(wǎng),并進(jìn)行了修改,有需要的朋友可以參考下
    2014-10-20
  • Unity3D 4.0 下載、安裝破解教程

    Unity3D是由Unity Technologies開(kāi)發(fā)的一個(gè)讓玩家輕松創(chuàng)建諸如三維視頻游戲、建筑可視化、實(shí)時(shí)三維動(dòng)畫(huà)等類型互動(dòng)內(nèi)容的多平臺(tái)的綜合型游戲開(kāi)發(fā)工具,是一個(gè)全面整合的專業(yè)
    2014-07-09
  • Unity3D中自動(dòng)調(diào)用的方法總結(jié)

    這篇文章主要介紹了Unity3D中自動(dòng)調(diào)用的方法總結(jié),需要的朋友可以參考下
    2014-04-24
  • unity3d怎么連接sql server數(shù)據(jù)庫(kù)

    雖然在Unity3D中能夠通過(guò)PlayerPrefs類來(lái)保存和讀取數(shù)據(jù),但是一旦數(shù)據(jù)量增大,僅僅通過(guò)代碼的方式存取數(shù)據(jù),這樣的工作量是非常大的
    2013-11-18

最新評(píng)論