Unity笔记- 狗刨学习网 - 图文 下载本文

GameObject.Find(“物体名”); 或 变量 = GameObject.FindWithTag(“物体标签名贵”); 11. 使用共有变量:拖放一个物体到变量上

引用脚本所在的物体的组件上的参数:如:transform.position=Vector3(0,5.4,4); 调整脚本所在物体上的参数:renderer.material.color = Color.red; light.intensity=8; 就是说如果把脚本放在物体上之后,就可以直接修改物体的组件属性 12. SendMessage()命令:一个调用其他物体上指令的方法---theCube1.SendMessage(“start”); 13. GetComponet()命令:引用一个组件。

14. 案例—编辑自己的第一人称控制器

1)unity中第一人称用鼠标控制方向,自己创建用键盘方向键控制角色移动

2)创建胶囊体当做第一人称控制器的实体。 3)编写脚本赋予到胶囊体上。

4)脚本:FixedUpdate():每隔一定时间执行一次函数

5)movedirection.y -= gravity*Time.deltaTime;

6)角色控制器上有Move命令来移动—>移动信息以及移动过程中的碰撞信息都能保存 7)角色碰撞器发生碰撞:

CollisionFlag.CollidedBelow:底部发生了碰撞”flags & CollisionFlags.CollidedBelow”返回1 CollisionFlag.CollidedNone:没有发生了碰撞”flags & CollisionFlags. CollidedNone”返回1 CollisionFlag.CollidedSides:四周发生了碰撞”flags & CollisionFlags. CollidedSides”返回1 CollisionFlag.CollidedAbove:顶端发生了碰撞”flags & CollisionFlags. CollidedAbove”返回1 8)@script RequireComponent(CharacterController); //unity自动添加角色控制器

五、小岛继续创建

1. 分割动画,分割开门、关门

1)点击模型?Animations(动画)

2)按“+”进行动画的添加,在动画的帧上截取动画并相应保存

3)点击应用

4)缩放工具:模型?Model?Scale Factor=1.5 2. 如何将3D max模型导入Unity3D中

3. 交互:交互就是指玩家与玩家之间,玩家与物体,物体与物体的相互交流,相互交流的信息。

4. 网格碰撞器虽然很符合物体,但是对资源的消耗特别多,因此需要为物体增加原型碰撞器。

5. 交互功能---碰撞之间的交互

1)Mesh Collider网格碰撞器会很消耗,所以添加其他碰撞器来创建一种更好的游戏体验。

2)添加一个其他碰撞器,给门添加一种盒子碰撞器Box Collider

3)为门添加标签可以在脚本中使用门

4)给门添加刚体,取消门使用重力,勾选使用动力学,门可以产生运动。

5)给门添加开门声和关门声,为门添加音频组件。取消动画的自动播放声音选项。 ①function OnControllerColliderHit(hit:ControllerColliderHit){} //控制器碰撞器—功能:检测角色控制器与其他碰撞器的碰撞,hit?当角色控制器与其他游戏物体发生碰撞,物体的信息和碰撞的信息保存在hit中。通过hit访问碰撞物体。 ②创建开门/关门函数:

function opendoor(door:GameObject){

//调用门上的音频组件播放一次开门声音 doorisopen = true;

door.gameObject.audio.PlayOneShot(door_open_sound); //开门动画,动画在门的父体模型上

door.transform.parent.animation.Play(\③计时关门: function Update(){ if(doorisopen){ }

}

//从上一帧到当前一帧所经过的时间 doortimer += Time.deltaTime; if(doortimer >door_open_time){ }

shutdoor(currentdoor.gameObject); doortimer = 0.0;

④优化代码:实现功能doorcheck?门的状态, a_clip?播放音频,anim_name?播放动

画,thisdoor?门

function door(doorcheck:Boolean,a_clip:AudioClip,anim_name:String,thisdoor:GameObject){} 优化之后的函数:

1. 光线投射-Physics.Raycast(12月30)

通过光线投射命令来实现自动开关门的效果

①.hysics.Raycast(transform.position,transform.forward,hit,3);//transform.position:角色控制器的位置,transform.forward:前进的方向、z轴方向,hit:与角色碰撞器的碰撞信息。3:投射的光线长度为3米。②、如果碰撞hit.collider.gameObject.tag==”playerDoor”; //与光线发生碰撞的便签是否为currentdoor:GameObject=hit.collider.gameObject;//

palyerDoor。③、var

2. 物体交互的方式--碰撞检测的方式:角色控制器自身的碰撞函数,光线投射,触发器 3. 触发器碰撞:1)给房子添加盒子碰撞器,选择触发碰撞器只需勾选Is Trigger。2)按

住shift键可以调整碰撞器。3)编写脚本,函数名:OnTriggerEnter—当有其他碰撞器进入触发区域时执行此函数,参数col:Collider—进入触发区域的触发器的信息保存。

4)好处:可以把脚本分散在其他物体上,减少角色上的脚本。

门上的脚本:

4. 物体交互的相关:

1)当角色控制器的脚本是碰撞脚本时,物体的盒子碰撞器选中Is Trigger(触发),

角色控制器穿过物体 2)当角色控制器的脚本是光线投影脚本时,无论是否选中Is Trigger都会显示碰撞效果。 3)两个普通碰撞器起物体之间的碰撞—OnCollisitionEntion。 六、收集物体和制作HUD---在屏幕上显示信息