unity3d物体移动脚本里怎么用脚本找到相机

如何给相机加上碰撞
这是我在其他论坛上找到的脚本,一个可以自由飞行的机相。可以调节视角旋转、移动速度。但我怎么也不能给相机加上碰撞,穿墙入室。改不了按住右键才能控制视角方向。var lookSpeed = 15.0;var moveSpeed = 15.0;var rotationX = 0.0;var rotationY = 0.0;function Update (){&& &rotationX += Input.GetAxis(&Mouse X&)*lookS&& &rotationY += Input.GetAxis(&Mouse Y&)*lookS&& &rotationY = Mathf.Clamp (rotationY, -90, 90);&& &&& &transform.localRotation = Quaternion.AngleAxis(rotationX, Vector3.up);&& &transform.localRotation *= Quaternion.AngleAxis(rotationY, Vector3.left);&& &&& &transform.position += transform.forward*moveSpeed*Input.GetAxis(&Vertical&);&& &transform.position += transform.right*moveSpeed*Input.GetAxis(&Horizontal&);}
要评论请先&或者&
& 其实最简单的方法,建一个Cube当这个相机的子物体。Cube有碰撞的话,你的相机就不会穿墙了~
: 其实最简单的方法,建一个Cube当这个相机的子物体。Cube有碰撞的话,你的相机就不会穿墙了~ ( 12:15) 或者相机当CUBE的子物体应当可以实现吧
: 其实最简单的方法,建一个Cube当这个相机的子物体。Cube有碰撞的话,你的相机就不会穿墙了~ ( 12:15) 这个方法貌似不太好碰撞后摄像机轴向容易出很多问题
把相机放到CUBE里试过,不行。我还试过把脚本放到CUBE上,再把一个普通的相机放到CUBE里。还是不行
看到JS就不想说什么了。 &不懂。
var lookSpeed = 15.0;var moveSpeed = 15.0;var rotationX = 0.0;var rotationY = 0.0;function Update (){&& &rotationX += Input.GetAxis(&Mouse X&)*lookS&& &rotationY += Input.GetAxis(&Mouse Y&)*lookS&& &rotationY = Mathf.Clamp (rotationY, -90, 90);&& &&& &if(Input.GetKey(KeyCode.Mouse0)) // 加这个,按住鼠标左键旋转&& {&& & & & transform.localRotation = Quaternion.AngleAxis(rotationX, Vector3.up);&& & & & transform.localRotation *= Quaternion.AngleAxis(rotationY, Vector3.left);&& &}&& &transform.position += transform.forward*moveSpeed*Input.GetAxis(&Vertical&);&& &transform.position += transform.right*moveSpeed*Input.GetAxis(&Horizontal&);} 碰撞检测就麻烦了,大家也在一直问, 貌似不加刚体就会穿越过去。 我还没有遇到过要操作单一镜头到处跑的情况, 一般都是第一人称控制器来做。 &我也一直很纳闷为啥不加刚体检测不到碰撞, 可能用法不对。 请高人指点。 如果它没有这种碰撞检测,那就按原理自己做一个。 写个脚本,从相机想四周发射射线,这个碰撞是可以检测到的。 那么你通过射线碰撞到的位置来判断镜头不能往那边走。
或者你把 机头放在角色控制器(CharacterController)上~ &控制角色控制器来达到你的要求。你可以试试看。
整个应该蛮常用的,看看啥时候有解决方案Unity 脚本手册
.PopCamera 弹出相机
static function PopCamera (camera : ) : void
Description描述
Retrieve all camera settings
取回所有相机设置。[基础教程] unity3d里面的摄像机是怎么调用和操作的
我的图书馆
[基础教程] unity3d里面的摄像机是怎么调用和操作的
最近项目比较忙,有一段时间没有更新教程了。今天终于空下来有时间写点东西了。
今天看一下unity3d里面的摄像机是怎么调用和操作的。
打开unity3d新建一个工程。在我们打开工程的时候unity3d会主动添加一个Main Camera,在Hierartchy视图中。点击Main Camera在Inspector中出现Main Camera的组件信息。如图
在camera组件中可以对是相机的一些属性进行调节。
Clera Flags:清除标记。下拉菜单一共有4个选项。
Skybox:天空盒,背景显示天空盒。如果该相机没有添加天空和则显示背景颜色。Solid Color:纯色,背景显示我没在Background中调制的颜射。Depth Only :仅深度不显示任何背景。空白处为透明。Don't Clear :不清除,每帧绘制在下一帧之上,造成涂片效果。一般很少用到。
Background :背景颜色。
Culling Mask :剔除遮罩,通过标签来选择物体是否被相机渲染。
Projection:相机类型,分为透视相机和正交相机。
perspective:透视相机。
Orthographic:正交相机。
区别如图:
当我们选择perspective是Field of view:视野范围,调节摄像机的视野。
当我们选择Orthographic是size:设置正交相机的视口大小。
Clipping Planes :Near为近距裁剪,Far为远距裁剪。
Normalized View Port Rect:用四个数值来表示这个相机的视图将绘制在屏幕的什么地方,使用屏幕坐标系(值0-1)。(注:屏幕坐标系的0,0点是在屏幕的左下角的)
在unity中做屏幕的分屏用到的就是这个参数。
举个例子说明一下分屏的方法:
首先创建一部相机。
将Main Camera相机的NormalizedView Port Rect属性里的x:0,y:0.5,w:1,h:0.5。
意思是是相机显示的坐标为(0,0.5)宽度为1,高度为0.5。
将新添加的Camera的Normalized ViewPort Rect属性里的x:0,y:0,w:1,h:0.5。
意思是是相机显示的坐标为(0,0.5)宽度为1,高度为0.5。
Game视图将显示如下结果
Depth :深度,用来确定不同相机的绘制顺序。具有较大值的相机将被绘制在具有较小值的相机的上面。
Rendering Path:渲染路径,下面有四个选项Use Player Settings:使用播放器设置。Vertex Lit :顶点光照。Forward :快速渲染。Deferred Lighting: 延迟照明。根据项目需求选择相应的渲染路径。
Target Texture 目标纹理,它将放置相机的视图到一个纹理上,该纹理可以被应用到另一个对象。这使得它可以方便地创建体育场大屏幕、监控摄像机、倒影等等效果。
Flare Layer:光晕层,让镜头光晕(LensFlares ) 出现在图像中。默认情况下,相机已经贴上光晕层(FlareLayer)。
GUI Layer:用户界面层,使二维图形用户界面可以渲染。在检视面板点击GUI层(GUI Layer)的复选框,可以启用和禁用在相机绘制GUI。
Audio Listener:音频侦听器,音频监听器扮演着像麦克风这样的设备。它接收任何在场景输入的音频源(AudioSource),并通过计算机的扬声器播放声音。
这样一部摄像机的基本属性已经介绍完了。下面我们看下怎么给场景添加天空盒。
第一步:选择相机,点击菜单栏中的component-&Rendering-&Skybox.
然后在Inspector视图最下面多了一栏Skybox。
然后给他添加一个天空球。天空球的制作方法,
一:新建一个材质球
选择新建的材质球,命名为skybox1,如图所示将材质设置为Skybox类型的。
结果如图:
在相应的地方添加相应的图片。这样一个天空球就制作完成了。
还有一个简单方法就是导入unity3d自带的资源里面有自作完成的天空球。
(注:自己制作天空球是要注意图片的属性 Wrap Mode属性
应改为Clamp格式,否则会出现接缝。)
将天空球制作完毕后添加的摄像机上,如图:
下面我们来看下怎么实现两个相机的动态切换。
首先我们在unity中创建两个相机。分别为camera0,camera1.
创建一个js脚本文件。写入一下代码。
var camera0 : C //定义一个名字为camera0的相机对象
var camera1 :C //定义一个名字为camera1的相机对象
function Update ()
if (Input.GetKey("1")) //如果敲击键盘的"1"
camera1.enabled = //camera1激活
camera0.enabled = //camera1停止
if (Input.GetKey ("0")) //如果敲击键盘的"0"
camera1.enabled = //camera1停止
camera0.enabled = //camera1激活
} 复制代码
将脚本添加到一个游戏物体上运行游戏。敲击键盘的1和0键。检测代码。
原文链接:
TA的推荐TA的最新馆藏[转]&Unity 3D--Camera摄像机组件 - 推酷
Unity 3D--Camera摄像机组件
&&&&&& 正如电影中的镜头用来将故事呈现给观众一样,Unity的相机用来将游戏世界呈现给玩家。你始终至少有一个相机在场景中,你也可以有多个。多相机可以给你一个双人分屏效果或创建高级的自定义效果。你可以让相机动起来,或用物理(组件)控制它们。几乎你能想到的任何事,都可以用相机变成可能,而且为了适合你的游戏风格,你可以用典型的或特殊的相机类型。
&&&&&& 相机是为玩家捕捉和显示世界的一种装置。通过定制和操作相机,可以让你的游戏外观与众不同。在一个场景中你
可以有数量不限的相机
。它们可以被设置为
以任何顺序来渲染
,在屏幕上的任何地方来渲染,
或仅仅渲染屏幕的一部分
Properties 属性
Clear Flags
决定屏幕的哪部分将被清除。当使用多个相机来描绘不同的游戏景象时,利用它是非常方便的
Background
在镜头中的所有元素描绘完成且没有天空盒的情况下,将选中的颜色应用到剩余的屏幕
Culling Mask
包含或忽略对象的层由相机来渲染。在检视视图中为你的对象指派层
Projection
切换摄像机的模拟透视功能
&&&&Perspective
相机将用完全透视的方式来渲染对象。
&&&&Orthographic
相机将用没有透视感的方式均匀地渲染对象
当设置了正交时摄像机的视口大小。
Field of view
相机的视角宽度,以及纵向的角度尺寸。
Clipping Planes
从相机到开始渲染和停止渲染之间的距离。
开始描绘的相对于相机最近的点。
开始描绘的相对于相机最远的点。
Normalized View Port Rect
标准视口矩形
用四个数值来表示这个相机的视图将绘制在屏幕的什么地方,使用屏幕坐标系(值0-1)。
相机视图将进行绘制的水平位置的起点
相机视图将进行绘制的垂直位置的起点
相机输出到屏幕上的宽度
相机输出到屏幕上的高度
绘图顺序中的相机位置,具有较大值的相机将被绘制在具有较小值的相机的上面
Rendering Path
该选项定义相机将要使用的渲染方法
&&&&Use Player Settings
使用播放器设置
该相机将使用任意一个播放器设置中所设置的渲染路径
&&&&Vertex Lit
本相机对所有对象的渲染会作为顶点光照对象来渲染
&&&&Forward
所有对象将按每种材质一个通道的方式来渲染,如同在Unity2.x中的标准
&&&&Deferred Lighting
(Unity Pro only
所有对象将无照明绘制一次,然后所有对象的照明将一起在渲染队列的末尾被渲染。
Target Texture
(Unity Pro/Advanced only)
请参考Render Texture,该页包含了相机视图的输出。这个引用属性将禁用相机渲染到屏幕的功能。
详解介绍几个主要属性:
&&&&&&& 相机对于将你的游戏显示给玩家是必不可少的。它们可以被定制、被脚本化、或被父子化(不好翻译,只好这样)以实现几乎任何可以想象的效果。对于一个益智游戏,你要保持相机处于静态显示全部视角。对于第一人称射击游戏,你应该将相机作为玩家角色的子对象,并将其放置在与角色的眼睛等高水平上。对于一个赛车游戏,你可能更希望让相机跟随玩家的车辆。
&&&&&& 你可以创建多个相机并且给每一个分配不同的深度。相机是按深度从低到高来绘制的,换言之,一个深度为2的相机将绘制在一个深度为1的相机之上。你可以调整标准视口矩形(参照前面的属性列表)的属性值来改变其大小和其在屏幕上的位置。这样你就可以创建多个小视窗,如导弹控制器,小地图窗口,后视镜等等。
Clear Flags 清除标记
每个相机在渲染时会存储颜色和深度信息。屏幕的未绘制部分是空的,默认情况下会显示天空盒。当你使用多个相机时,每一个都将自己的颜色和深度信息存储在缓冲区中,还将积累大量的每个相机的渲染数据。当场景中的任何特定相机进行渲染时,你可以设定清除标记以清除缓冲区信息的不同集合。可以通过下面四个选项之一来完成:
1.Skybox 天空盒
&&&& 这是默认设置。在屏幕上空的部分将显示当前相机的天空盒。如果当前相机没有设置天空盒,它会默认使用渲染设置(在Edit-&Render Settings里)中选择的天空盒。然后它将退回使用背景颜色。另外天空盒组件可以添加到相机上。如果你想创建一个新的天空盒,您可以使用本
2.Solid Color 纯色
&&&& 屏幕上的任何空的部分将显示当前相机的背景颜色。
3.Depth Only 仅深度
&&&& 如果你想绘制一个玩家的枪而不让它在环境内部得到裁剪,你要设置一个深度为0的相机来绘制环境,还要另一个深度为1的相机单独绘制武器。该武器相机的清除标记应设置为仅深度。这将保持环境的图形显示在屏幕上,但会丢弃所有关于每个对象在三维空间中的位置的信息。当枪被绘制出来,不透明的部分将完全覆盖任何已绘制的事物,而不管枪到墙之间如何接近。(这部分看起来很费劲)
4.Don't Clear 不清除
该模式不清除任何颜色或深度缓存。其结果是,每帧绘制在下一帧之上,造成涂片效果。这不是用于游戏的典型方式,最好是与自定义着色器一起使用。
Culling Mask 剔除遮罩
剔除遮罩使用层有选择地渲染一组对象。有关使用层的信息可以在
通常好的做法,是把用户界面放到不同的层,然后用一个独立相机单独渲染UI层。
为了使UI显示在其他相机视角的顶部,你还需要设置清除标记为Depth only,并确保UI相机的深度比其他相机高。
Render Texture 渲染纹理
此功能仅适用于Unity Pro版,它将放置相机的视图到一个纹理上,该纹理可以被应用到另一个对象。这使得它可以方便地创建体育场大屏幕、监控摄像机、倒影等等效果。
相机可以像其他对象一样被实例化、父子化和脚本化
为提高赛车游戏的速度感,请使用高视野范围。
如果你添加一个刚体组件,相机可用于物理模拟。
在你的场景中你可以使用的相机数量是没有限制的。
正交相机可以很好地用于制作3D用户界面。
如果你正遭遇深度问题(表面互相接近闪烁),尝试设置Near Plane尽可能大。
相机无法同时渲染到屏幕和渲染纹理,只能有一个。
Pro版有一个渲染相机的视图到纹理的选项,称为渲染到纹理,可以得到更独特效果。
Unity预装了相机脚本,在Components-&Camera Control中可以找到。用它们来实验以体会&一切皆有可能&。
已发表评论数()
请填写推刊名
描述不能大于100个字符!
权限设置: 公开
仅自己可见
正文不准确
标题不准确
排版有问题
主题不准确
没有分页内容
图片无法显示
视频无法显示
与原文不一致}

我要回帖

更多关于 unity脚本怎么运行 的文章

更多推荐

版权声明:文章内容来源于网络,版权归原作者所有,如有侵权请点击这里与我们联系,我们将及时删除。

点击添加站长微信