u3d開發(fā)第三人稱攝像機(jī)_第1頁
u3d開發(fā)第三人稱攝像機(jī)_第2頁
u3d開發(fā)第三人稱攝像機(jī)_第3頁
u3d開發(fā)第三人稱攝像機(jī)_第4頁
u3d開發(fā)第三人稱攝像機(jī)_第5頁
已閱讀5頁,還剩13頁未讀 繼續(xù)免費(fèi)閱讀

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報(bào)或認(rèn)領(lǐng)

文檔簡介

1、創(chuàng)建第三人稱角色控制器本教程的宗旨不是指導(dǎo)讀者如何使用Unity中的第三人稱攝像機(jī),而是教讀者如何自己開發(fā)一個(gè)簡單的第三人稱角色控制器。準(zhǔn)備角色首先,需要一個(gè)包含 3個(gè)動(dòng)畫循環(huán)的角色,即:空閑循環(huán)、行走循環(huán)、跑動(dòng)循環(huán)。創(chuàng)建工程和場景創(chuàng)建一個(gè)虛擬的游戲場景,以便角色在其中走動(dòng)。1 .創(chuàng)建一個(gè)工程"File -> New Project"導(dǎo)入標(biāo)準(zhǔn)資源包(standard asset package ),以便能夠獲得需要的天空盒(sky box )和地形紋理。2. 創(chuàng)建一個(gè)場景,其中包含紋理地形,天空盒和平行光:-第一,創(chuàng)建一個(gè)地形:"Terrai n ->

2、 Create Terrai n"。-第二,創(chuàng)建一個(gè)平行光,并對它進(jìn)行旋轉(zhuǎn),從而使之照亮地形:"GameObject -> Create Other -> Directio nal Light"-第三,在 Hierarchy 中選中地形 (Terrai n ),在 In spector中選中 “ Pai nt TerrainTexture ”按鈕,并添加一個(gè)默認(rèn)的紋理。I £13 應(yīng)*-第四,"Edit -> Render Settings",然后在 Inspector 中設(shè)置 Skybox 的材質(zhì)。最終的效果,如下

3、圖:導(dǎo)入角色在Project Pan el中右鍵單擊,選擇"Import New Asset",從彈出的對話框中選擇需要導(dǎo)入的角色。當(dāng)角色導(dǎo)入后,你會(huì)在Project panel中看到角色prefab。輸入設(shè)置需要?jiǎng)?chuàng)建的角色控制器很簡單,它有一個(gè)行走和跑動(dòng)選項(xiàng),因此我們需要設(shè)置輸入選項(xiàng),以便控制向前,后退,向左,向右,以及在走動(dòng)和跑動(dòng)之間切換等。當(dāng)然,如果你添加了其 他的動(dòng)畫,如跳動(dòng),攻擊等,你還需要更多輸入選項(xiàng)。執(zhí)行:"Edit -> Project Setti ngs -> In put".在Inspector上會(huì)變成如下形式::-Hor

4、izontalVertical> Firelk Fire 2> F心卜 JumpMouse XMouseYMouse ScrollWheelWindow Shake X Window Shake YHorizontal» VerticalFirel> Hre2> Flre3乍 Jump展開Axis部分,其中有17個(gè)不同類型的輸入形式。在頂部,有"Horiz on tai”和“Vertical ” ,它包含了 left, right, forward 和 backwards輸入選項(xiàng)。他們有 positive和negative 兩個(gè)值,分別控制不同的方向

5、,支持鍵盤以及其他類似輸入設(shè)備,如游戲手柄 等。不需要17個(gè)輸入選項(xiàng),因此進(jìn)行如下改變:1將17設(shè)置成3。2. 保留"Horizontal ”和"Vertical ”選項(xiàng),可以改變其中的關(guān)于按鍵的設(shè)置,默認(rèn)情況下,up, down, left, right對應(yīng)著鍵 W, A, S and D 。3. 選擇第三個(gè)選項(xiàng)(默認(rèn)為Fire1 ),展開它的設(shè)置:-重新命名 "Run"。-將 Positive 設(shè)置為"left ctrl"。-將Negative 設(shè)置為空。- 將 alter native Positive禾口 Negative o

6、pti ons設(shè)置為空。C InspectorI T 彗Input Manager (Input Manager) AxesSizeHorizontal3 RunNameRunE>scriprive NameDescriptive Negative NameNegative ButtonPositive Buttonleft CtrlAlt Negative ButtonAit Positive BurtonCraw ity1000DeadOrQQlStnsitivitv1000SnapInvertlTypeKey or Mous亡 BurtonAxiX axis:Joy NumGet

7、Motion from all joys ticks :下面讓我們來看一下 Horizontal 和Vertical軸,Horizontal指的是你的左右控制,Vertical指的是前后控制。需要設(shè)置一個(gè)正值和一個(gè)負(fù)值,另外還可以提供另外一套按鍵,設(shè)置的時(shí)候一定注意不用發(fā)生沖突。動(dòng)畫周期在執(zhí)行角色控制之前,需要對動(dòng)畫進(jìn)行配置。導(dǎo)入的角色中包含了3個(gè)動(dòng)畫循環(huán),如果你打開3ds Max,你會(huì)在時(shí)間線上發(fā)現(xiàn)這些動(dòng)畫,首先是靜止動(dòng)畫,然后是走動(dòng),接著 是跑,當(dāng)我們導(dǎo)入此角色的時(shí)候,這些動(dòng)畫同樣會(huì)一起導(dǎo)入,但我們需要告訴Unity,這里有3個(gè)動(dòng)畫,分別指明每一個(gè)動(dòng)畫循環(huán)的起始幀和終止幀,并給每一個(gè)動(dòng)畫循

8、環(huán)進(jìn)行命名, 以便于我們在控制腳本中進(jìn)行調(diào)用。動(dòng)畫的時(shí)間線按照下面的形式進(jìn)行設(shè)計(jì):Idle 循環(huán):0-180 幀Walk 循環(huán):200-230 幀Run 循環(huán):250-274 幀在Project面板上選擇此角色,在Inspector中查看它的設(shè)置。從中找到FBX Importer部分,如果你展開了這些設(shè)置,你將在下面看到動(dòng)畫序列選項(xiàng)。ArimaiionsGeneration Store in Root_t_lAnimations re stored in the scene's transform root objects. U&e this when animating 理m

9、ythiing that h趣5 a hierarchyRake Animations _lAnim. CompressionNameSunEndWrapModeLoop1QRevert| Apply |Anirnatior Wrap ModeSpEitAnimatio/我們需要?jiǎng)?chuàng)建3個(gè)動(dòng)畫序列,點(diǎn)擊右側(cè)的 +號(hào),創(chuàng)建3個(gè)不同的內(nèi)容,對他們進(jìn)行命名, 然后設(shè)置起始和終止幀,如下:1. idle (0-180)2. walk (200-230)3. run (250-274)完成上述設(shè)置后,點(diǎn)擊Apply ,Unity會(huì)自動(dòng)打斷此動(dòng)畫循環(huán),形成3個(gè)不同的序列,我們可以在腳本中使用動(dòng)畫序列的名稱。

10、最終的動(dòng)畫序列如下圖:Split Animations yNameStart EndWrapModeLoopIdle0180walk2002NDrun250274DefijltrDefault:DerauLt; © o Q 口O你或許已經(jīng)注意到了一個(gè)blend模式和一個(gè)loop選項(xiàng),你可以設(shè)置動(dòng)畫混合模式和序列循環(huán)模式,但我們后面將使用腳本進(jìn)行控制,所以這里使用默認(rèn)設(shè)置。當(dāng)這些設(shè)置完成后,我們開始執(zhí)行動(dòng)畫控制器了(character con troller)。放置角色將角色從project 中拖放到scene視圖中,此時(shí)角色顯示在 scene中,同時(shí)在hierarchy 中也會(huì)顯示出

11、來。你或許需要在場景中對角色進(jìn)行定位,一定要保證它的腳接觸到地面(但要保證不要穿過地面,否則對象會(huì)掉下去)。你可以使用窗口右上角的視角控制手柄來切換top, down , side, front 和perspective模式,最終角色的放置方式如下:添加角色控制器組件(Character Controller )現(xiàn)在我們需要在角色上添加一個(gè)"Character Controller"以便Unity知道此對象為一個(gè)可運(yùn)行的角色,在Hierarchy 中選擇角色:Comp onent -> Physics -> Character Con troller當(dāng)Prefa

12、b警告窗口出現(xiàn)后,點(diǎn)擊Add,接收這種改變,當(dāng)添加角色控制組件后,我們需要縮放它的膠囊型碰撞器,以便它的尺寸和角色的尺寸相當(dāng),并將它放置在角色的周圍(包裹在角色上)。在Inspector中你可以看到角色控制的設(shè)置,調(diào)節(jié)到 front和side視圖,然后調(diào)整高度和半徑,以便與它和角色相匹配,調(diào)整膠囊的中心值在正確位置。Animate Only if Visible JIT 3 Character ControllerQ 黑Height1.85Radius0.4Slope Limit90Step Offset3Skin Width0r08Min Move Diianc0CenterX0Y0.93Z

13、0對于我們的角色,設(shè)置高度為1.85,半徑為0.4 , Y中心值為0.93 ;如果你使用自己的角色,設(shè)置會(huì)有所不同。調(diào)整膠囊的大小使之匹配角色的尺寸,調(diào)整它的位置,以便不穿越地形,如下圖:放置攝像機(jī)接下來我們來設(shè)置這個(gè)攝像機(jī),選擇Main Camera ,調(diào)整它的位置,以便于攝像機(jī)在角色的后面調(diào)整攝像機(jī)的角度,以便于稍微偏轉(zhuǎn)一點(diǎn),從另外一個(gè)角度上觀察角色。如果你此時(shí)運(yùn)行游戲,你可以看到角色,處于閑置狀態(tài)。你不能移動(dòng)角色,我們需要寫一個(gè)腳本來接收用戶的輸入,然后來掌握控制器,然后告訴角色模型來改變不同的動(dòng)畫循環(huán)。創(chuàng)建并應(yīng)用腳本(Script)(1 )首要的是創(chuàng)建一個(gè)腳本script ,在 Pro

14、ject Panel 上單擊 Create 按鈕,然后選擇"JavaScript",這將在 Project Panel 中 創(chuàng)建一個(gè)新的 JavaScript 。(2)對腳本進(jìn)行重命名"PlayerCharacter" 然后將其從 Project Panel中拖放到角色上,以便使它們之間建立聯(lián)系,現(xiàn)在腳本中的內(nèi)容就應(yīng)用在了角色上。(3 )打開腳本編輯器,修改其中的代碼。編寫腳本如果你曾經(jīng)看過其他的3rd person控制器腳本,會(huì)發(fā)現(xiàn)它們很長,如果你是unity的初學(xué)者則會(huì)發(fā)現(xiàn)這些代碼是很復(fù)雜的,下面的介紹會(huì)盡量的突出重點(diǎn),從而使之更加容易理解。(1 )

15、首先定義一些控制器要用到的非常重要的變量,private var walkSpeed : float = 1.0;private var gravity = 100.0;private var moveDirecti on : Vector3 = Vector3.zero;private var charC on troller : CharacterC on troller;下面我們對上面的 4條代碼進(jìn)行一下解釋:walkSpeed是一個(gè)浮點(diǎn)型,存儲(chǔ)了移動(dòng)的速度gravity 是另外一個(gè)浮點(diǎn)型,其中包含了重力加速度,用于保持角色位于地面上。moveDirection 是一個(gè)Vector3 (

16、包含xyz坐標(biāo)的變量)類型,存儲(chǔ)了角色運(yùn)動(dòng)的方向。charCo ntroller是一個(gè)角色控制器變量(character con troller variable),我們將在此變量中設(shè)置前面添加的控制器,以便于我們能夠在腳本中直接引用它。(2)創(chuàng)建一個(gè)Start ()函數(shù),他將在游戲運(yùn)行的時(shí)候,自動(dòng)被調(diào)用,此函數(shù)會(huì)被用于初 始化運(yùn)行時(shí)。fun ctio n Start()charC on troller = GetComp onen t(CharacterC on troller);ani mati on. wrapMode = WrapMode.Loop;Start()函數(shù)類似于 main(

17、) / winmain()函數(shù),它在腳本加載時(shí)自動(dòng)被調(diào)用,Start() 只能被調(diào)用一次,不能多次執(zhí)行。上面腳本中的第一行,將前面創(chuàng)建的character controller 賦給controller 變量,第二行設(shè)置動(dòng)畫wrapMode模式為"loop"。此語句和前面設(shè)置動(dòng)畫的 loop選項(xiàng)框有相同的作用., 但通過此語句,可以得到所有的動(dòng)畫的loop屬性。(3 )接下來創(chuàng)建一個(gè) Update。函數(shù),它時(shí)另一個(gè)重要的函數(shù),start()和update() 的區(qū)別是,update()函數(shù)在每一幀都會(huì)自動(dòng)調(diào)用。因此,所以應(yīng)用在事件列表和實(shí)時(shí)行為腳 本是很有用的。fun ct

18、io n Update ()我們的行為代碼都添加在此函數(shù)中。創(chuàng)建基本行為代碼首先,我們不需要角色能夠在空中移動(dòng)或轉(zhuǎn)身。因此我們必須檢測角色是否在地面上,如果角色在地面上,我們運(yùn)行玩家移動(dòng)角色,否則,角色將下落,直到接觸地面為止。因此在Update ()函數(shù)的頂部添加一個(gè)if語句:if(charC on troller.isGro un ded = true)上面的代碼的含義是,當(dāng)角色控制器接觸到地面后,我們可以執(zhí)行if中的功能"isGrounded"是一個(gè)條件,Unity可以自動(dòng)的理解,當(dāng)控制器角色接觸到地面后,它的值變?yōu)閠rue,如果沒有接觸到地面,則它的值為false。

19、如果角色沒有在地面上,我們需要告訴Unity將角色降落到地面上,因此需要在if后面添加一些代碼,提供一些重力的影響效果。moveDirecti on.y -= gravity * Time.deltaTime;上面這行代碼將起到重力的作用效果,它將使角色下降,將下面的代碼放置在重力代碼的后面:charCo ntroller.Move(moveDirectio n * (Time.deltaTime * walkSpeed);上面的這一行新代碼使用 Move函數(shù)來移動(dòng)角色,他是Unity中的函數(shù),用于移動(dòng)對象,我們將移動(dòng)方向 movedirection 這個(gè)vector3 賦給此函數(shù),此函數(shù)中包

20、含了xyz位置,并根據(jù)時(shí)間值來調(diào)整下降的速度。換句話說,我們在 movedirection的方向上以每秒 walkspeed的速度移動(dòng)對象。如果你保存了腳本,并通過平移工具將角色拉高一定距離,那么當(dāng)你松開鼠標(biāo)的時(shí)候, 你會(huì)發(fā)現(xiàn),你的角色會(huì)自動(dòng)向下降落,指導(dǎo)它觸碰到地面。如果你的角色穿過地形,可以將角色 拉高一些,從而保證角色的腳在地面上或高于地面。如果角色仍舊會(huì)穿過地面,則需要檢查你事先設(shè)置好的碰撞體(膠囊),查看它的底部是不是和角色的腳相匹配,如果它們不匹配則,此碰撞體有可能已經(jīng)穿過了地面。因?yàn)槲覀円呀?jīng)施加了重力,下面讓我們添加一些代碼,以便于角色能夠向前行走。在此之前, 我們需要檢查輸入的

21、 Vertical axis,然后使之控制角色向前移動(dòng)。將下面的代碼添加到isGrounded 的IF中。if(ln put.GetAxis("Vertical") > .1)我們使用In put 。 GetAxis("n ame ”)來讀取任何 vertical axis軸的輸入。如果輸入值大于0.1,那么就會(huì)有一個(gè)向前的輸入需求。Axes具有*。*值的原因是,模擬控制器有可能有一個(gè)讀取的范圍(控制速度會(huì)根據(jù)操作桿按下的距離而定)。我們也可以通 過它的負(fù)值來控制相反的運(yùn)動(dòng)。當(dāng)按下向前的按鈕后,if中的語句就會(huì)執(zhí)行。接下來,在我們告訴角色向前移動(dòng)之前,我們需

22、要有一個(gè)行走/跑動(dòng)的切換選項(xiàng),通常,當(dāng)Ctrl被按下后,角色開始跑動(dòng),否則角色會(huì)行走。如果你只有一個(gè)行走速度,你可以跳過此 設(shè)置,只添加向前行走的代碼。但很多游戲都至少具有2個(gè)不同的移動(dòng)速度。因此,讓我們創(chuàng)建另外一個(gè)if語句,它可以檢測是否我們需要行走和跑動(dòng)了。將下面的代碼放置在GetAxis("Vertical") 的if語句if(In put.GetButt on ("Ru n")else這個(gè)新的if語句使用GetButton監(jiān)聽Run按鈕,如果run按鈕按下的時(shí)候,我們可以執(zhí)行角色的跑動(dòng),否則我們的角色只會(huì)行走。因此,讓我們在if中添加行走和跑動(dòng)的

23、代碼。ani matio n. CrossFade("ru n");walkSpeed = 4;上面的代碼中放入到第一個(gè) if中(跑動(dòng))。第一行使用an imatio n.CrossFade("a nimation_ name")來混合需要的動(dòng)畫,第二行設(shè)置行走速度(4是跑動(dòng)的速度)。我們將下面的代碼放置在else中:an imatio n. CrossFade("walk");walkSpeed = 1;上面的代碼執(zhí)行相同的功能,但混合僅行走動(dòng)畫,并且設(shè)置速度為1.接下來我們向添加一些代碼,使之能夠在前進(jìn)鍵釋放后時(shí)角色返回空閑動(dòng)畫。

24、elseani mati on. CrossFade("idle");上面的代碼中我們檢測了向前、跑動(dòng),行走速度和空閑狀態(tài),我們現(xiàn)在想檢測后退的運(yùn)動(dòng), 在if中添加下面的代碼:else if(In put.GetAxis("Vertical") < -.1)an imatio n"walk".speed = -1;an imatio n. CrossFade("walk"); walkSpeed = 1;上面的代碼檢測負(fù)值(控制后退),然后將動(dòng)畫速度設(shè)置為-1 ,向后移動(dòng)角色,混和動(dòng)畫為行走,速度為1.此時(shí)如

25、果按下play,你能夠控制角色向前、向后行走,切換行走和跑動(dòng),然而在角色真的 在執(zhí)行動(dòng)畫時(shí),它不能真的向前和向后運(yùn)動(dòng)。將下面的代碼放在IsGrounded 的if中,放置在最后。moveDirection = Vector3(0,0, I nput.GetAxis("Vertical");moveDirecti on = tran sform.Tra nsformDirectio n(moveDirectio n);上面的兩行代碼將設(shè)置垂直運(yùn)動(dòng)和運(yùn)動(dòng)方向,以便于角色真的向前移動(dòng)。我們現(xiàn)在還不能進(jìn)行旋轉(zhuǎn),因此需要檢測水平控制,來進(jìn)行旋轉(zhuǎn)操作,添加下面的代碼, 到上面代碼的前面

26、。tran sform.eulerA ngles.y += In put.GetAxis("Horizo ntal");上面的代碼設(shè)置旋轉(zhuǎn)方向,點(diǎn)擊play,現(xiàn)在角色可以旋轉(zhuǎn)了,但你可能會(huì)發(fā)現(xiàn)兩個(gè)瑕疵:(1 )如果你執(zhí)行了后退操作后,當(dāng)再次執(zhí)行向前操作時(shí),角色仍舊會(huì)執(zhí)行向后的動(dòng)畫。(2) If you turn on the spot without moving the character does nt step.接下來讓我們來修改這兩個(gè)小bug。將下面的代碼添加到行走的if中的最頂部。ani mati on "walk".speed = 1;這將保

27、證行走動(dòng)畫在你向前走的時(shí)候執(zhí)行向前的操作。下面在IsGrounded的if中的陳述放置在設(shè)置旋轉(zhuǎn)的eulerAngles前面:/ Create an ani mati on cycle for whe n the character is turning on the spotif(Input.GetAxis("Horizontal") && !lnput.GetAxis("Vertical")an imatio n. CrossFade("walk");if語句檢測如果角色在沒有向前行走時(shí),進(jìn)行旋轉(zhuǎn),在旋轉(zhuǎn)的時(shí)候播放

28、行走動(dòng)畫。 現(xiàn)在可以比較完美的執(zhí)行動(dòng)畫了。下面需要讓攝像機(jī)跟蹤角色了。粘貼代碼下面是完整的代碼:private var walkSpeed : float = 1.0;private var gravity = 100.0;private var moveDirecti on : Vector3 = Vector3.zero;private var charC on troller : CharacterC on troller;fun ctio n Start()charC on troller = GetComp onen t(CharacterC on troller);ani mati

29、 on. wrapMode = WrapMode.Loop; fun ctio n Update ()if(charC on troller.isGro un ded = true)if(l nput.GetAxis("Vertical") > .1)if(ln put.GetButton ("Ru n")ani matio n. CrossFade("ru n"); walkSpeed = 4;elseani mati on "walk".speed = 1;an imatio n. CrossFade(&

30、quot;walk"); walkSpeed = 1;else if(ln put.GetAxis("Vertical") < -.1)an imatio n"walk".speed = -1;an imatio n. CrossFade("walk"); walkSpeed = 1;elseani matio n. CrossFade("idle");/ Create an ani mati on cycle for whe n the character is turning on the sp

31、otif(Input.GetAxis("Horizontal") && !Input.GetAxis("Vertical")an imatio n. CrossFade("walk");tran sform.eulerA ngles.y += In put.GetAxis("Horiz on tal");/ Calculate the moveme nt direct ion (forward moti on) moveDirection = Vector3(0,0, I nput.GetAxis(

32、"Vertical"); moveDirect ion = tran sform.Tra nsformDirectio n(moveDirectio n);moveDirect ion.y -= gravity * Time.deltaTime; charC on troller.Move(moveDirecti on * (Time.deltaTime * walkSpeed);按照上面的步驟可以創(chuàng)建一個(gè)可以在場景運(yùn)行的角色,然而,在我們創(chuàng)建的系統(tǒng)中有兩個(gè)瑕疵:1 攝像機(jī)不能跟蹤角色。2 角色可以在十分陡峭的地形上可以行走。攝像機(jī)跟蹤當(dāng)角色在走動(dòng)的時(shí)候,我們希望攝像機(jī)在后

33、面跟隨角色運(yùn)動(dòng),有3種方法可以完成此功能:(1 )從Hierarchy 中拖動(dòng) Main Camer 至U character prefab 上,這樣將攝像機(jī)綁定到 控制器上。(2) 創(chuàng)建一個(gè)光滑跟著攝像機(jī)( smooth follower camera ),它將綁定在角色上。(3) 創(chuàng)建一個(gè)軌道攝像機(jī)( orbital camera )。第一種方法是最簡單的,它可以將攝像機(jī)作為角色的一個(gè)子集(child ),如果想測試場景運(yùn)行的時(shí)候,可以采用此方法,但這種方法設(shè)置的攝像機(jī)運(yùn)動(dòng)有一些粗糙,它并不是一個(gè)最好的跟蹤器。第二種方法,我們施加一個(gè)光滑跟蹤組件(smooth follow compo n

34、ent )到攝像機(jī)上,然后將其與角色相關(guān)聯(lián),從而獲得一個(gè)更好的跟蹤器。第三種方法稍微有一些復(fù)雜,可以參看另外其他的一些指導(dǎo)文檔。在這里我們使用第二種方法,執(zhí)行下面的基本步驟。1. 在hierarchy中選擇攝像機(jī)。2. 選擇【Component】/【Camera Control 】/【Smooth Follow 】。這樣可以將一個(gè)光滑跟蹤組件(smooth follow compo nent)添加到攝像機(jī)上,我們接下來需要將它和角色連接起來。1. 在 Hierarchy 中選擇 Main Camera 。2. 在 Inspector中查看 Smooth Follow script 部分,如下圖。3. 設(shè)置目標(biāo)(target )為角色的transfor

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲(chǔ)空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

最新文檔

評論

0/150

提交評論