unity3d教程相机控制.docx
- 文档编号:10339791
- 上传时间:2023-02-10
- 格式:DOCX
- 页数:14
- 大小:381.53KB
unity3d教程相机控制.docx
《unity3d教程相机控制.docx》由会员分享,可在线阅读,更多相关《unity3d教程相机控制.docx(14页珍藏版)》请在冰豆网上搜索。
unity3d教程相机控制
unity3d相机切换效果
varcamera0:
Camera;
varcamera1:
Camera;
functionUpdate(){
if(Input.GetKey("1"))
{
camera1.enabled=true;
camera0.enabled=false;
}
if(Input.GetKey("2"))
{
camera1.enabled=false;
camera0.enabled=true;
}
}
functionOnGUI(){
GUI.Box(Rect(10,10,100,90),"CameraSwitch");
//Makethefirstbutton.Ifitispressed,Application.Loadlevel
(1)willbeexecuted
if(GUI.Button(Rect(20,40,80,20),"Camera1")){
camera1.enabled=true;
camera0.enabled=false;
}
//Makethesecondbutton.
if(GUI.Button(Rect(20,70,80,20),"Camera2")){
camera1.enabled=false;
camera0.enabled=true;
}
}
镜头切换脚本
var_camera1:
Camera;
var_camera2:
Camera;
functionUpdate()
{
if(Input.GetKey("1"))//如果敲击键盘的"1"
{
_camera1.enabled=true;//camera1激活
_camera2.enabled=false;//camera1停止
}
if(Input.GetKey("0"))//如果敲击键盘的"0"
{
_camera1.enabled=false;//camera1停止
_camera2.enabled=true;//camera1激活
}
}
但是这个脚本不能使镜头恢复初始状态,还在研究中。
。
。
。
。
。
。
。
。
。
。
。
。
。
。
。
。
。
。
。
。
。
。
。
。
。
。
。
。
。
。
。
。
。
。
。
。
。
。
。
unity3d相机参数及同一场景中多个相机的应用
由uke于星期日,11/08/2009-18:
35发表
在unity3d中,相机是一个场景中必不可少的元素,相机就像是人的眼睛,三维场景的呈现,最后还是要通过相机来实现的。
下图为相机的属性面板:
可以看出,相机物体与一般物体的区别即在于其有一个camera组件,下面我们来看看这个组件下的属性参数都有什么作用.
clearflags:
这个属性用来设置此相机的画面背景如何处理,共有四个选择:
天空盒,固定颜色,仅深度,不做处理。
如果再多一个固定图片的选项就好了,可以直接在此做背景图了。
当选择天空盒时,你将会在场景中看到你在场景渲染设置中所用到的天空盒画面。
当选择固定颜色时,下面的backgroundcolor即为用到的颜色。
当选择仅深度时,这个相机是没有背景的,就好像这个相机渲染出了一个有深度的透明画面一样。
最后一项不太明白在什么情况下使用。
normalizedviewportrect
这组参数是用来分割画面的,只能分割成方形画面,设置一坐标点及宽和高即可。
可以做四格漫画了,比较有用一组参数。
nearclipplane
farclipplane
fieldofview
这三个参数直接决定此相机视野的深度和广度,用过手动相机的朋友会比较明白。
orthographic此参数将相机设为正交相机,既画面没有透视变化,如果你要做一些平面效果的话,那就使用正交相机。
orthographicsize此参数设定正交相机的视野范围。
配合上一个参数使用。
Depth:
设定多个相机的渲染先后顺序。
cullingMask:
比较有用的一个参数,设定当前相机的渲染对象层,类似于分层渲染,这样就可以设定哪些对象可以被渲染,哪些对象不被渲染。
配合layer使用。
targetTexture:
指定渲染纹理。
。
。
。
。
。
。
。
。
。
。
。
。
。
。
。
。
。
。
。
。
。
。
。
。
。
。
。
。
。
。
。
unity3d自定义曲线路径
这个脚本可以让你在U3D内设置曲线并让物体沿着你设置的曲线进行运动。
(教程最后面附源代码下载地址)
1.新建一个空的GameOject(用来存放路径点),在它的层次下新建几个Cube作为路径点,再新建一个GameOject作为运动的物体(Cube或Sqhere)。
2.为运动的物体添加SplineController脚本.
3. 如图,选中移动物体对象,打开属性面板,将存放路径点的对象Game拖曳到上一步添加脚本后预留的接口上,系统将自动计算路径,并以红色线条显示在场景中。
你可以通过改变路径点Cube位置来调整路径,或者添加新的路径点,系统都会自动计算路径,你要移动的物体将会沿着你设置的路径移动。
4. 下面介绍添加脚本后生成的接口的作用,
SplineRoot :
自动计算路径曲线接口。
Duration :
移动一次所持续时间,即可以控制移动速度,默认10秒。
OrientationModern :
控制移动物体的角度、方向,可选两项:
NODE:
角度固定不变。
TANGENT:
将与曲线正切动态改变角度。
WrapMode :
循环模式,可选两项:
ONCE:
只运行一次。
LOOP:
一直循环。
AutoStrart :
是否自动计算曲线起始点。
AutoClose :
是否自动计算曲线终结点。
HideOnExecute :
程序运行后路径点是否可见。
官方社区的一个例子
。
。
。
。
。
。
。
。
。
。
。
。
。
。
。
。
。
。
。
。
。
。
。
。
。
。
。
。
。
摄像机路径动画及动画录制
Here'stheBlendercamerapathprojectthatImentioned here.Intheinterestoffocus(andsize),Istrippedouteverythingexceptthebasics.IgotthebasicideawhenIcameacross thispage onmakingcontrol-point-lessbeziercurve motion inFlash.Orrather,thecontrolpointsaregeneratedfromthepointsalreadyexistinginthepath.Thiswayyoucangetnicecurvesstraightfrommeshdata.
Touseit,inBlenderfirstmakeastraightlineusingthecurvetool(ifthatisn'tacontradiction ).Add->Curve->BezierCurve,thenpressVtostraightenthepoints,andthenpressTabtoleaveeditmode.IntheLink&Materialspane,callit"line".Youonlyhavetomakeoneoftheseandyoucanuseitwithanynumberof3Dpaths.
So,makea3Dpath(Add->Curve->Path).IntheCurve&Surfacepane,clickintheBevOb:
fieldandtype"line".Thisusesthebeziercurvewemadefirsttodefinetheshape.Inthiscasewejustwantasimplelinesowecantiltthepathandgetsurfacenormalsfromitlater.MovepointsinthepathbyclickingonthemandpressingG(Grab)thenclickingagaintoplace.ExtendthepathbyselectingapointontheendandpressingEandclickingtoplace.PressTtotiltselectedpointsleftorright.Continueaslongasyouwant,butifyou'remakingaloopingpath,donottrytoclosetheloop...justleaveagapbetweenthefirstandlastpoints.IntheDefResolU:
field,youcangoverylow;probably1isfine,or2ifyouwantextraprecision.Outsideofeditmode,pressoption-Ctoconvertthepathtoamesh,andsaveit(besuretomakeacopyofthepre-convertedpath,incaseyouwanttogobackandeasilyedititlater).
WhenyoubringitintoUnity,makesurethat"Automaticallycalculatenormals"issetto180.Otherwise,ifyoudidsomefunkythingswiththepath(like360degreespins),Unitymakessomeextrapoints,whichobviouslymessesuptheendofthepath.
Whenyouplacethepathsomewhereinyourscene,youcanposition,rotate,andscaleithoweveryouwant,andthesetransformsareaccountedforproperly.Youcanleavethemeshrendererontovisuallyseewherethepathgoesexactly,andthendisabletherendererwhenyouhaveitpositionedwhereyouwantit.
Tomakeacameragoalongthepath,putthePathFollowscriptonit(IputitintheCamera-Controlmenu,butyoucanalsouseitforotherobjects).DragthepathfromBlenderontothePathslot.UseMoveSpeedtocontroltheoverallspeedofthecameramovement,thoughrelativespeedswithinthepatharecontrolledbyhowfarapartthepointsare.Soifyouwantacompletelyevenspeed,makeallthepointsprettymuchthesamedistanceapartfromeachother.
Directioniseitherforwardorbackward,thoughbackwardjusttraversesthepointsinreverseorder;itdoesn'tmakethecamerafacebackwardoranything.ThelittlearrowsyouseeinBlender,convenientlyenough,tellyouwhatdirectionthepathgoesin.
MovementOnlymakesthecamerafollowthepointsthroughspace,butleavestherotationalonesothecamerastaysfacingthedirectionit'sinwhenitstarts.Typicallyyou'dusethiswiththe Motion Recordscript(seebelow)toaddmanualrotationtoallthepoints.
Loop...I'msureyoucanfigurethatoneout.
Startpointstartsthecameramovementatagivenpoint.Soifyouhaveapathmadeupof120points,using60forStartpointmakesthecamerastarthalfwayalongthepath.
Endpointendsthecameramovementatagivenpoint,countingbackwardsfromthelastpoint.Itonlyworksinnon-loopingmode.Ifyou'renotlooping,thisshouldbesettoatleast3,orelsemovementdatafromthefirstfewpoints"bleeds"intothelastfew.Thisishowloopmodeworks,butyoutypicallydon'twantthatfornon-looping.
EaseinandEaseoutareforstartingandendingsmoothly.Intendedfornon-loopingmode.
"Objecttotrack"isatransform,whichifusedmakesthecameraalwayspointatthatobjectasitmovesalongthepath.Ifthisisnone,thenithasnoeffect.
RotationDataisastringgeneratedby Motion Record.Ifyouleaveitempty,itdoesnothing.
ZoomDataisalsoastringgeneratedby Motion Record.Ifleftempty,itdoesnothing.OtherwiseitbehaveslikeRotationData,butchangesthezoom(fieldofview).
Therestofthevariablesyoucanignore,buttheyneedtobepublicfor MotionRecordtoaccess...isthereawaytodohiddenpublicvariables?
(Shortofstatic,whichwon'tworkinthiscasesinceyoumightwanttousemultipleobjectsonpathsatonce).
Theuseof Motion Recordisdetailedinthenextpost.
动画录制
OK,docsfor Motion Record:
Ifyouwanttoaddextrarotationtocamerapathmovement,eitherincombinationwithMovementOnlyorjusttoaddsomeadditionalrotationtothatwhichyougetfromthepathitself,putthe Motion Recordscriptonthesamecamerathat'susingthePathFollowscript.Thisallowsyoutosteertheviewwiththemouse/keyboardasthecameragoesalong,andediteachpointafterwardifyouwant.
(My StormCitydemo usesMovementOnlywithmanualrotationforthehelicopter--thisallowsthehelicoptertomovealongthepath,withthemanualrotationmakingitbehavemorelikeahelicopter.Italsousesregularmode--notMovementOnly--withextramanualrotationforthechaseviewpoint,inordertogetasortof"hand-held"movementwhichyoucan'tgetfromthepathalone.Thecardemointhatsametopicusesregularmodewithoutanyextrarotation,withtheObjectToTracksettothecar.)
Youalsoneedthethree Motion Record GUI objects,whichexistasaprefab.Probablyeasiesttomakeapackageofthisandimportitintowhateverprojectyouwant.
Sensitivityishowsensitivethemousecontrolsare.KeySensitivityishowsensitivethekeyboardcontrolsarefor motion.InvertYAxisdoesjustthat,andFileNameisthenameofatextfilethatwillbegeneratedwhenyou'redone.Thisgetsputinthebasefolderoftheproject,outsideofAssets,becauseit'snotuseddirectly.
Whenyourunthescene,you'llsee"Recording"inthelowerright.Thismeansyoucanmovetheviewaroundasyougoalongthepath,andtherotationand/orzoomateachpointisrecorded.IfitsaysRotation/Zoom,thenyouarerecordingboth.IfitsaysRotation,thenyou'reusingzoomdatathatyourecordedbeforeandputonthecamera,soyou'reonlyrecordingrotation,butyoucaneditthezoom.IfitsaysZoom,thenyou'vegotsomerotationdata,soyou'reonlyrecordingzoom,butyoucanedittherotation.Ifyouhavebothrotationandzoomdata,thenyoucanonlyeditthem.Ifyouremovetherotationand/orzoomdatafromthecamera,thenyoucanrecordthemagain.
The%intheupperleftiswhatpointyou'reonatthemoment,outofthetotalnumberofpointsinthepath.
PressHtogetareminderofkeyboardcommands.(Orthehelpkey,theoretically,thoughitdoesn'tseemtoworkeventhoughUnitydoesn'tobjecttothename.)Theseare:
WSADtorotatetheviewontheXandYaxesinsteadof/inadditiontothemouse.ZXor<>(really.and,)rotatesontheforwardaxis.[(leftbracket
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- unity3d 教程 相机 控制