Unity基础知识学习笔记二
2014-12-25 19:06
956 查看
1,object Instantiate(object original,Vector3 position,Quaternion rotation)
克隆原始物体,并返回克隆物体。
例如:Instantiate(prefab,new Vector3(1,1,1),Qutaternion.identity);克隆一个prefab物体。
2,InputManager,输入管理器,用于配置自定义按键。
3,Mathf结构体:风装了常见数学计算方法的结构体。
结构体成员:
Mathf.PI (Only Read)读取圆周率。
Mathf.Infinity 正无穷大。
Mathf.NegativeInfinity:负无穷小
Deg2Rad:度到弧度的转换常量。例如float deg=30.0f;Debug.log(Mathf.Deg2Rad*deg);
Rad2Deg:弧度到度的转换常量。
[/code]
Mathf常用方法:
Mathf.SIn(float f);正弦值
Mathf.Cos(float f);余弦值
Mathf.Lerp(float from,float to,float t);返回from 和 to 之间的一个插值,基于浮点数t,t限制在 0~1之间。例如:void Update(){transform.position=new Vector3(Mathf.Lerp(10.0,20.0,0.5),0,0); }
Mathf.Abs(float a);返回绝对值。
Mathf.Clamp(float value,float min,float max);限制value的值在min 和max之间,如果value小于min,返回min,若大于max,返回max.
4,Vector3结构体 封装了向量运算的相关变量和方法的结构体。
normalized:
只是三个数而已,可以代表 位置,方向,旋转。
5,Time类的属性:
1)Time.time:从游戏开始到现在所用时间,是以秒计算的。
2)Time.deltaTime:获取上一次Update()方法执行的事件到当前执行Update()方法时间的差值。
3)Time.fixedTime,每一帧固定消耗的时间。
4)Time.timeScale时间缩放。传递时间的缩放。这可以用于减慢运动效果。当时间为1
时,正常运行,当为0时,处于暂停阶段。
如果降低timeScale,建议也降低Time.fixedDeltaTime同样的数值。
当timeScale设置为0时,FixedUpdate()函数将不会被调用。
5)Time.fixedDeltaTime固定增量时间。
function Update () { if (Input.GetButtonDown ("Fire1")) { if (Time.timeScale == 1.0) Time.timeScale = 0.7; else Time.timeScale = 1.0; // Adjust fixed delta time according to timescale // The fixed delta time will now be 0.02 frames per real-time second //根据timescale调整固定增量时间。 Time.fixedDeltaTime = 0.02 * Time.timeScale; } }
6)Time.frameCount帧数
已经传递的帧的总数(只读)。
7) 每一帧固定更新消耗的时间可以通过导航菜单Edit->Project Settings—>Time 菜单去设置。
方法:MonoBehaviour.FixedUpdate()固定时间更新
处理Rigidbody时候,应该用FixedUpdate()代替Update().例如:当给刚体加一个作用力时候,必须应用作用力在FixedUpdate里面的固定帧。而不是Update里面的帧。
5,Transfrom类的:
位置,旋转,缩放,维持父子关系
localPostiont postion 本地坐标,世界坐标
1,使用GUILayout 自动布局类,默认为纵向布局。
Label :创建一个自动布局的标签。
Box :创建一个自动布局的box .
Toggle:创建一个开关按钮。
HorizontalSlider:创建一个水平滑动条,可以拖动改变在最小和最大值之间的值。
Toolbar:创建一个工具栏。
可以用横向布局
代码中必须用变量来使用,常量在服务器,或者配置文件中来配置。
2,GUI (用户设置位置)实现自定义的布局类。
Button:TextArea:
SelectionGrid:创建按钮网格
BeginScrollView:滚动条的开始部分。
EndScrollView:滚动条的结束部分。
Window:创建一个弹出窗口。
3,Render 类,继承于Component 对于任何游戏物体或组件,可以通过一个render属性来访问任何物体的渲染器,网格或粒子系统,也可以通过它来访问并修改材质相关的属性。
4,AudioSource:在Unity引擎中,音频源(AudioSource)主要用途是在场景中播放2D或者3D的音频剪辑(AudioClip)。
5,Unity中,Light组件可以用来模拟太阳,燃烧的火柴,手电筒,枪火光照亮场景中得对象,可以创造完美的视觉效果。
6,Render.material和Render.shareMaterial的区别:
改变Render.material的时候,只是改变该物体正在使用的渲染材质,
改变Render.shareMaterial的时候,所有正在使用该材质的所有物体都一起变化。并且也修改储存在工程里的材质设置。不推荐使用shareMaterial进行修改,推荐material。
音频播放。
GUILayout 和GUi 区别:前者需要Rect,后者不需要
GUI坐标左上为起点。
打地鼠游戏。
Mouse,MouseManager,GameManager.
1,安卓和Iphone 中得最上边的 StatusBar状态栏高度为 20px。
2,Application类:所有与应用程序相关的方法都封装在Application类中。
属性:
platform 返回游戏运行平台
runBlackground应用程序是否在后台运行。
dataPath:游戏数据文件夹的路径。
persisterDataPath:一个持久数据目录的路径。
temporaryCachePath:临时数据/缓存目录的路径。
loadedLevel :加载的关卡索引
方法:
LoadLevel:读取新关卡后立即切换,其参数为所读取新关卡的名称或索引。
LoadLevelAdditive:加载一个新场景,当前场景不会被销毁。
OpenURL:Unity 支持在当前设备中调用浏览器打开网页。
Quit:退出应用程序。在编辑器或者web播放器中退出被忽略。
异步加载:
第一种:异步加载新场景,当新场景加载后进入新场景并且销毁之前的场景。
Application.LoadLevelAsync(“Game");
第二种:同样异步加载新场景,新场景加载后,保留之前场景的游戏对象并且进入新场景。
Application.LoadLevelAddiveAsync(“Scene");
组件,组件的通讯。
1,三种方式为当前游戏对象添加组件:
gameObject.AddComponent<Light> ();
TrailRenderer t = gameObject.AddComponent ("TrailRenderer") as TrailRenderer;
gameObject.AddComponent(typeof(Rigidbody)) ;
注意:没有RemoveComent方法,删除组件用Object.Destroy()方法,直接删除整个游戏对象。
2,获取组件分方式为:
Transform t1 = GetComponent<Transform> ();
Transform t2 = GetComponent ("Transform") as Transform;
Transform t3= GetComponent(typeof(Transform)) as Transform;
GetCompomentInChilren() 获取子游戏对象的组件。
GetCompomentsInChilren();
GetCompoments();
GetCompoment();
注意:如果用as转换符修饰后必须要声明变量用于接收。
3,脚本间的方法的访问:
SenMessage(); 调用当前对象的方法
Broadcastmessage(); 调用子对象的方法
SendMessageUpwards(); 调用父对象的方法
注意:不推荐使用。,因为会遍历所有对象方法,所以会占用比较多的时间。只有当不确定游戏对象的类型的时候,用这三个方法,惊醒调用方法。
4,动画Animation类
animatePysics:为真时动画在物理循环中执行,与运动学刚体结合时有用
clip:默认的动画片段
cullingType:消隐类型:AlwaysAnimate,BasedOnRenders,BasedOnClipBounds,BasedOnUsedOnUserBounds.
isPlaying:是否正在播放中。
localBounds:Animation 组件在本地空间的边界。
playAutomatiacally:为真时自动播放。
this[string]:返回片段的动画状态。
wrapMode:动画循环模式。
5,Animation构成结构:
Animation :一个或多个Animation Clip组成,可对Clip进行控制。
Animation Clip:具体的某个动作的动画信息。
Animation Curve:动画曲线信息。
Keyframe:构成曲线的关键帧。
time —value;
Animation Event:动画播放到某一时刻触发某个事件。
6,Animation常用方法:
播放控制:Play,Stop,CrossFade,Blend
Clip访问:AddClip,GetClipCount,RemoveClip
7,AnimationClip类属性:
length:动画的长度,以妙计算(只读)
frameRate:帧速率(只读)
wrapMode:在动画状态设置使用的默认循环模式
localBounds:Animation组件在本地空间的边界
8,AnimationClip类方法:
SetCurve:给动画指定曲线一个特殊的属性
ClearCurves:从剪辑清除所有曲线
AddEvent:给剪辑添加动画事件
9,curve 由 keyframe 关节真组成。
9,粒子系统:Particle System
三种属性:状态属性、粒子过程属性、发射初始属性
状态属性的六个状态:
IsPaused,
IsPlaying,
IsStopped,
loop:粒子是否是循环的。
playOnAwake如果为true,将在开始的时候,自动播放。
time:粒子播放时间
粒子过程属性:
duration :粒子系统的持续时间
emissionRate:发射速率
enableEmission:当设置为false的时候,粒子系统不会发射粒子。
gravyityModifier:缩放被应用到Physics.gravity所定义值的影响。
maxParticleCount:发射的最大粒子数量
particleCount:当前粒子的数量(只读属性)
playbackSpeed:粒子系统播放速度,1为正常值。
randomSpeed:随机种子被用于粒子系统发射,如果设为0,将会在Awake的时候被指定为一个随机值。
safeCollisionEventSize:用于ParticleSystem.GetCollisionEvents事件的安全数组大小。
simulationSpace:粒子系统仿真的坐标空间,世界坐标空间或者本地坐标空间。
ParticleSystem初始属性:
startColor:初始颜色。
startDelay:初始发射延迟。
startLifetime:生命周期总计(秒)
startRotation:初始旋转
startSize:初始大小
startSpeed:初始速度
常用方法:
int GetParticles(Particle[] particles);
void SetParticles(Particle[] particles,int size);
Clear :清除粒子系统所有粒子
GetCollisionEvents:获取粒子碰撞事件,返回写入数组里的事件数。
Emit:立即发射指定的粒子
GetParticles:获取当前粒子系统内的粒子,返回被写入Input particle数组中得粒子数量。
IsAlive:判断系统中是否还有粒子。
Pause:暂停粒子系统的播放。
Play:播放粒子系统
SetParticles:设置当前粒子系统的粒子,大小为被设置的粒子数量。
Simulate:在给定的时间周期内快进仿真粒子系统,然后暂停它
Stop:停止播放粒子系统。
OnParticleCollison事件:在某个粒子碰到一个碰撞体的时候被触发。可以被用于控制物体在被粒子之中后被销毁。
12-19
鼠标事件
OnMouseDown
OnMouseDrag:鼠标按下,并且保持按下状态触发,
OnMouseEnter:鼠标进入Collider区域的时候或者进入GUIElement的时候,被触发
OnMouseExit:
OnMouseOver:处于Collider之上的时候,每帧都调用
OnMouseUp
OnMouseUpAsButton:当鼠标在同一个GUIElement或者Collider上按下又弹起得情况下会触发。
触发事件:
OnTriggerEnter
OnTriggerStay
OnTriggerExit
碰撞事件
OnCollisionEnter
OnCollisonStay
OnCollisonExit
12-21
程序服务器,证书服务器。
先创建Identityfile,才能发布
Swing Copters 游戏
1,游戏对象消失三种方法的区别:
gameObject.renderer.enabled
//是控制一个物体是否在屏幕上渲染或显示 而物体实际还是存在的 只是想当于隐身 而物体本身的碰撞体还依然存在的
GameObject.Destroy()
//表示移除物体或物体上的组件 代表销毁该物体 实际上该物体的内存并没有立即释放 而是在你下下个场景中槽释放内存资源,就是你a场景中Destroy了 一般是在c场景中才真正释放该物体的内存资源(这是我的体会 不知道理解错误没)
gameObject.active
//是否在场景中停用该物体 在你gameObject.active =false中 则你在场景中用find找不到该物体
//如果该物体有子物体 你要用SetActiveRecursively(false) 来控制是否在场景中停用该物体(递归的)
12-22
第九讲:物理射线
1,Ray 类:
变量:origin :射线的起点、direction:射线的方向
构造器 :Ray(vector3 position ,vector3 direction) ;
方法:Ray.GetPoint(float distance); 返回沿着射线在distance 距离单位的点;
Mathf.Infinity 属性:表示正无穷大。
2,光线投影
Ray ray=Camera.main.ScreenPointToRay(Input.mousePosition);
RaycastHit hit;
If(Physics.Raycast(ray,out hit,100))
Debug.DrawLine(ray.orgin,hit.point);
hit :如果此方法返回True,hit将包含碰撞器的更多信息。
此方法用于检测一范围内都包含哪些碰撞器。得到这些游戏物体的信息,用于后面的操作。
3,Physics类
属性:
Physics.gravity:场景中用于所有刚性物体的重力。Physics.gravity=Vector3(0,-1.0f,0);
Physics.minPenetrationForPenalty:最小渗透深度。当两个物体发生接触碰撞时,物体间的最小穿透深度值,默认为0.05,取值范围从0到正无穷,必须为正值。Physics.minPenetrationForPenalty=0.1f;
Physics.bounceThreshold:反弹劾值。当两个物体发生碰撞的时候,相对速度小于这个值得时候,不发生反弹。默认2
Physics.sleepVelocity:静止速度。如果物体的线性物体在这个速度之下的时候,物体将进入静止状态。默认0.15.
Physics.sleepAngularVelocity:如果物体的角速度在这个值之下的时候处于静止状态。默认0.14.
Physics.maxAngularVelocity:设置高速旋转物体的旋转速度的最大值。默认7.
Physics.solverIterationCount:迭代次数。如果关节刚体有摇摆或行为杂乱,设置较高的值使其稳定。默认7.
方法:
Raycast:在场景中投下与所有碰撞体碰撞的一条射线。用于获取一个碰撞体。
RaycastAll:用于获取一系列,所有的碰撞体。
Linecast:获取一条线上的碰撞体。
OverlapShere:获取球形内的碰撞体,返回collider[];
CapsuleCast:胶囊体投射。
CheckShere:如果定义的球体和物体发生碰撞,返回真,球体定义在世界坐标系上。
InoreCollision:使碰撞体1和碰撞体2无效。
IgnoreLayerCollision:忽略层1和层2的所有碰撞。
GetIgnoreLayerCollision:是否层1和层2之间的碰撞检测被忽略。
layerMask ,只选定LayerMask层内的碰撞器,其他层内的碰撞器忽略。
克隆原始物体,并返回克隆物体。
例如:Instantiate(prefab,new Vector3(1,1,1),Qutaternion.identity);克隆一个prefab物体。
2,InputManager,输入管理器,用于配置自定义按键。
3,Mathf结构体:风装了常见数学计算方法的结构体。
结构体成员:
Mathf.PI (Only Read)读取圆周率。
Mathf.Infinity 正无穷大。
Mathf.NegativeInfinity:负无穷小
Deg2Rad:度到弧度的转换常量。例如float deg=30.0f;Debug.log(Mathf.Deg2Rad*deg);
Rad2Deg:弧度到度的转换常量。
Mathf.Epslion:一个很小的浮点数值。[code] function isEqual(a: float, b : float) { if(a >= b-Mathf.Epsilon && a <= b + Mathf.Epsilon) return true; else return false; }
[/code]
Mathf常用方法:
Mathf.SIn(float f);正弦值
Mathf.Cos(float f);余弦值
Mathf.Lerp(float from,float to,float t);返回from 和 to 之间的一个插值,基于浮点数t,t限制在 0~1之间。例如:void Update(){transform.position=new Vector3(Mathf.Lerp(10.0,20.0,0.5),0,0); }
Mathf.Abs(float a);返回绝对值。
Mathf.Clamp(float value,float min,float max);限制value的值在min 和max之间,如果value小于min,返回min,若大于max,返回max.
4,Vector3结构体 封装了向量运算的相关变量和方法的结构体。
normalized:
只是三个数而已,可以代表 位置,方向,旋转。
5,Time类的属性:
1)Time.time:从游戏开始到现在所用时间,是以秒计算的。
2)Time.deltaTime:获取上一次Update()方法执行的事件到当前执行Update()方法时间的差值。
3)Time.fixedTime,每一帧固定消耗的时间。
4)Time.timeScale时间缩放。传递时间的缩放。这可以用于减慢运动效果。当时间为1
时,正常运行,当为0时,处于暂停阶段。
如果降低timeScale,建议也降低Time.fixedDeltaTime同样的数值。
当timeScale设置为0时,FixedUpdate()函数将不会被调用。
5)Time.fixedDeltaTime固定增量时间。
function Update () { if (Input.GetButtonDown ("Fire1")) { if (Time.timeScale == 1.0) Time.timeScale = 0.7; else Time.timeScale = 1.0; // Adjust fixed delta time according to timescale // The fixed delta time will now be 0.02 frames per real-time second //根据timescale调整固定增量时间。 Time.fixedDeltaTime = 0.02 * Time.timeScale; } }
6)Time.frameCount帧数
已经传递的帧的总数(只读)。
7) 每一帧固定更新消耗的时间可以通过导航菜单Edit->Project Settings—>Time 菜单去设置。
方法:MonoBehaviour.FixedUpdate()固定时间更新
处理Rigidbody时候,应该用FixedUpdate()代替Update().例如:当给刚体加一个作用力时候,必须应用作用力在FixedUpdate里面的固定帧。而不是Update里面的帧。
5,Transfrom类的:
位置,旋转,缩放,维持父子关系
localPostiont postion 本地坐标,世界坐标
1,使用GUILayout 自动布局类,默认为纵向布局。
Label :创建一个自动布局的标签。
Box :创建一个自动布局的box .
Toggle:创建一个开关按钮。
HorizontalSlider:创建一个水平滑动条,可以拖动改变在最小和最大值之间的值。
Toolbar:创建一个工具栏。
可以用横向布局
代码中必须用变量来使用,常量在服务器,或者配置文件中来配置。
2,GUI (用户设置位置)实现自定义的布局类。
Button:TextArea:
SelectionGrid:创建按钮网格
BeginScrollView:滚动条的开始部分。
EndScrollView:滚动条的结束部分。
Window:创建一个弹出窗口。
3,Render 类,继承于Component 对于任何游戏物体或组件,可以通过一个render属性来访问任何物体的渲染器,网格或粒子系统,也可以通过它来访问并修改材质相关的属性。
4,AudioSource:在Unity引擎中,音频源(AudioSource)主要用途是在场景中播放2D或者3D的音频剪辑(AudioClip)。
5,Unity中,Light组件可以用来模拟太阳,燃烧的火柴,手电筒,枪火光照亮场景中得对象,可以创造完美的视觉效果。
6,Render.material和Render.shareMaterial的区别:
改变Render.material的时候,只是改变该物体正在使用的渲染材质,
改变Render.shareMaterial的时候,所有正在使用该材质的所有物体都一起变化。并且也修改储存在工程里的材质设置。不推荐使用shareMaterial进行修改,推荐material。
音频播放。
GUILayout 和GUi 区别:前者需要Rect,后者不需要
GUI坐标左上为起点。
打地鼠游戏。
Mouse,MouseManager,GameManager.
1,安卓和Iphone 中得最上边的 StatusBar状态栏高度为 20px。
2,Application类:所有与应用程序相关的方法都封装在Application类中。
属性:
platform 返回游戏运行平台
runBlackground应用程序是否在后台运行。
dataPath:游戏数据文件夹的路径。
persisterDataPath:一个持久数据目录的路径。
temporaryCachePath:临时数据/缓存目录的路径。
loadedLevel :加载的关卡索引
方法:
LoadLevel:读取新关卡后立即切换,其参数为所读取新关卡的名称或索引。
LoadLevelAdditive:加载一个新场景,当前场景不会被销毁。
OpenURL:Unity 支持在当前设备中调用浏览器打开网页。
Quit:退出应用程序。在编辑器或者web播放器中退出被忽略。
异步加载:
第一种:异步加载新场景,当新场景加载后进入新场景并且销毁之前的场景。
Application.LoadLevelAsync(“Game");
第二种:同样异步加载新场景,新场景加载后,保留之前场景的游戏对象并且进入新场景。
Application.LoadLevelAddiveAsync(“Scene");
组件,组件的通讯。
1,三种方式为当前游戏对象添加组件:
gameObject.AddComponent<Light> ();
TrailRenderer t = gameObject.AddComponent ("TrailRenderer") as TrailRenderer;
gameObject.AddComponent(typeof(Rigidbody)) ;
注意:没有RemoveComent方法,删除组件用Object.Destroy()方法,直接删除整个游戏对象。
2,获取组件分方式为:
Transform t1 = GetComponent<Transform> ();
Transform t2 = GetComponent ("Transform") as Transform;
Transform t3= GetComponent(typeof(Transform)) as Transform;
GetCompomentInChilren() 获取子游戏对象的组件。
GetCompomentsInChilren();
GetCompoments();
GetCompoment();
注意:如果用as转换符修饰后必须要声明变量用于接收。
3,脚本间的方法的访问:
SenMessage(); 调用当前对象的方法
Broadcastmessage(); 调用子对象的方法
SendMessageUpwards(); 调用父对象的方法
注意:不推荐使用。,因为会遍历所有对象方法,所以会占用比较多的时间。只有当不确定游戏对象的类型的时候,用这三个方法,惊醒调用方法。
4,动画Animation类
animatePysics:为真时动画在物理循环中执行,与运动学刚体结合时有用
clip:默认的动画片段
cullingType:消隐类型:AlwaysAnimate,BasedOnRenders,BasedOnClipBounds,BasedOnUsedOnUserBounds.
isPlaying:是否正在播放中。
localBounds:Animation 组件在本地空间的边界。
playAutomatiacally:为真时自动播放。
this[string]:返回片段的动画状态。
wrapMode:动画循环模式。
5,Animation构成结构:
Animation :一个或多个Animation Clip组成,可对Clip进行控制。
Animation Clip:具体的某个动作的动画信息。
Animation Curve:动画曲线信息。
Keyframe:构成曲线的关键帧。
time —value;
Animation Event:动画播放到某一时刻触发某个事件。
6,Animation常用方法:
播放控制:Play,Stop,CrossFade,Blend
Clip访问:AddClip,GetClipCount,RemoveClip
7,AnimationClip类属性:
length:动画的长度,以妙计算(只读)
frameRate:帧速率(只读)
wrapMode:在动画状态设置使用的默认循环模式
localBounds:Animation组件在本地空间的边界
8,AnimationClip类方法:
SetCurve:给动画指定曲线一个特殊的属性
ClearCurves:从剪辑清除所有曲线
AddEvent:给剪辑添加动画事件
9,curve 由 keyframe 关节真组成。
9,粒子系统:Particle System
三种属性:状态属性、粒子过程属性、发射初始属性
状态属性的六个状态:
IsPaused,
IsPlaying,
IsStopped,
loop:粒子是否是循环的。
playOnAwake如果为true,将在开始的时候,自动播放。
time:粒子播放时间
粒子过程属性:
duration :粒子系统的持续时间
emissionRate:发射速率
enableEmission:当设置为false的时候,粒子系统不会发射粒子。
gravyityModifier:缩放被应用到Physics.gravity所定义值的影响。
maxParticleCount:发射的最大粒子数量
particleCount:当前粒子的数量(只读属性)
playbackSpeed:粒子系统播放速度,1为正常值。
randomSpeed:随机种子被用于粒子系统发射,如果设为0,将会在Awake的时候被指定为一个随机值。
safeCollisionEventSize:用于ParticleSystem.GetCollisionEvents事件的安全数组大小。
simulationSpace:粒子系统仿真的坐标空间,世界坐标空间或者本地坐标空间。
ParticleSystem初始属性:
startColor:初始颜色。
startDelay:初始发射延迟。
startLifetime:生命周期总计(秒)
startRotation:初始旋转
startSize:初始大小
startSpeed:初始速度
常用方法:
int GetParticles(Particle[] particles);
void SetParticles(Particle[] particles,int size);
Clear :清除粒子系统所有粒子
GetCollisionEvents:获取粒子碰撞事件,返回写入数组里的事件数。
Emit:立即发射指定的粒子
GetParticles:获取当前粒子系统内的粒子,返回被写入Input particle数组中得粒子数量。
IsAlive:判断系统中是否还有粒子。
Pause:暂停粒子系统的播放。
Play:播放粒子系统
SetParticles:设置当前粒子系统的粒子,大小为被设置的粒子数量。
Simulate:在给定的时间周期内快进仿真粒子系统,然后暂停它
Stop:停止播放粒子系统。
OnParticleCollison事件:在某个粒子碰到一个碰撞体的时候被触发。可以被用于控制物体在被粒子之中后被销毁。
12-19
鼠标事件
OnMouseDown
OnMouseDrag:鼠标按下,并且保持按下状态触发,
OnMouseEnter:鼠标进入Collider区域的时候或者进入GUIElement的时候,被触发
OnMouseExit:
OnMouseOver:处于Collider之上的时候,每帧都调用
OnMouseUp
OnMouseUpAsButton:当鼠标在同一个GUIElement或者Collider上按下又弹起得情况下会触发。
触发事件:
OnTriggerEnter
OnTriggerStay
OnTriggerExit
碰撞事件
OnCollisionEnter
OnCollisonStay
OnCollisonExit
12-21
程序服务器,证书服务器。
先创建Identityfile,才能发布
Swing Copters 游戏
1,游戏对象消失三种方法的区别:
gameObject.renderer.enabled
//是控制一个物体是否在屏幕上渲染或显示 而物体实际还是存在的 只是想当于隐身 而物体本身的碰撞体还依然存在的
GameObject.Destroy()
//表示移除物体或物体上的组件 代表销毁该物体 实际上该物体的内存并没有立即释放 而是在你下下个场景中槽释放内存资源,就是你a场景中Destroy了 一般是在c场景中才真正释放该物体的内存资源(这是我的体会 不知道理解错误没)
gameObject.active
//是否在场景中停用该物体 在你gameObject.active =false中 则你在场景中用find找不到该物体
//如果该物体有子物体 你要用SetActiveRecursively(false) 来控制是否在场景中停用该物体(递归的)
12-22
第九讲:物理射线
1,Ray 类:
变量:origin :射线的起点、direction:射线的方向
构造器 :Ray(vector3 position ,vector3 direction) ;
public Ray ray = new Ray(transform.position, transform.forward);
方法:Ray.GetPoint(float distance); 返回沿着射线在distance 距离单位的点;
Mathf.Infinity 属性:表示正无穷大。
2,光线投影
Ray ray=Camera.main.ScreenPointToRay(Input.mousePosition);
RaycastHit hit;
If(Physics.Raycast(ray,out hit,100))
Debug.DrawLine(ray.orgin,hit.point);
hit :如果此方法返回True,hit将包含碰撞器的更多信息。
此方法用于检测一范围内都包含哪些碰撞器。得到这些游戏物体的信息,用于后面的操作。
3,Physics类
属性:
Physics.gravity:场景中用于所有刚性物体的重力。Physics.gravity=Vector3(0,-1.0f,0);
Physics.minPenetrationForPenalty:最小渗透深度。当两个物体发生接触碰撞时,物体间的最小穿透深度值,默认为0.05,取值范围从0到正无穷,必须为正值。Physics.minPenetrationForPenalty=0.1f;
Physics.bounceThreshold:反弹劾值。当两个物体发生碰撞的时候,相对速度小于这个值得时候,不发生反弹。默认2
Physics.sleepVelocity:静止速度。如果物体的线性物体在这个速度之下的时候,物体将进入静止状态。默认0.15.
Physics.sleepAngularVelocity:如果物体的角速度在这个值之下的时候处于静止状态。默认0.14.
Physics.maxAngularVelocity:设置高速旋转物体的旋转速度的最大值。默认7.
Physics.solverIterationCount:迭代次数。如果关节刚体有摇摆或行为杂乱,设置较高的值使其稳定。默认7.
方法:
Raycast:在场景中投下与所有碰撞体碰撞的一条射线。用于获取一个碰撞体。
RaycastAll:用于获取一系列,所有的碰撞体。
Linecast:获取一条线上的碰撞体。
OverlapShere:获取球形内的碰撞体,返回collider[];
CapsuleCast:胶囊体投射。
CheckShere:如果定义的球体和物体发生碰撞,返回真,球体定义在世界坐标系上。
InoreCollision:使碰撞体1和碰撞体2无效。
IgnoreLayerCollision:忽略层1和层2的所有碰撞。
GetIgnoreLayerCollision:是否层1和层2之间的碰撞检测被忽略。
layerMask ,只选定LayerMask层内的碰撞器,其他层内的碰撞器忽略。
相关文章推荐
- Unity基础知识学习笔记一
- 《JAVA2核心技术 卷一 基础知识(原书第七版)》《Core java2,Volume I-Fondamentsls Seven Edition》 学习笔记(三)对象的克隆
- 《JAVA2核心技术 卷一 基础知识(原书第七版)》《Core java2,Volume I-Fondamentsls Seven Edition》 学习笔记(二)BREAK和CONTINUE的区别
- Castle学习笔记一:基础知识
- MVC学习笔记一:基础知识
- Android Map开发基础知识学习笔记
- [ITIL学习笔记]ITIL基础知识
- 有关DataForm组件的研究_基础知识和实现服务端批量CURD——Silverlight学习笔记[23]
- Symbian C++学习笔记连载一:Symbian基础知识
- extjs 学习笔记(一) 一些基础知识
- WCF学习笔记 (一):基础知识之终结点
- C++学习笔记---------基础知识sizeof用法
- 摄影基础知识学习笔记之光与色:白平衡 - 水中沙 - 博客大巴
- C/C++ 基础知识学习笔记 (不断更新中)
- java学习笔记,关于java的一些基础知识,适用于初学者,第一节
- 《JAVA2核心技术 卷一 基础知识(原书第七版)》《Core java2,Volume I-Fondamentsls Seven Edition》 学习笔记(一)
- Linq学习笔记1(基础知识)
- JAVA学习笔记(基础知识)
- {传智播客} (学习笔记)--Oracle使用需要掌握的基础知识
- Solaris学习笔记:8.SSH配置(1.ssh基础知识)