初识Unity 3D——小小小Demo(上)
来源:互联网 发布:mac 隐藏dock 快捷键 编辑:程序博客网 时间:2024/05/16 23:34
首先,在了解了最基础的Unity的概念、操作之后,我们来模拟一个最简单的场景,运用学过的简单的知识。场景是这样子的:
有一扇门,一个学生,学生来到门前,门会自动打开,然后学生进去,门自动关闭。
为了完成这个demo,首先我们能从上面的描述中得到两个主体,Door和Student。然后,注意一下我们需要完成的是需求是学生来到门前,这就意味着我们需要有一个触发器而不能用Door自带的碰撞体。所以,还有一个主体参与Demo,那就是一个触发器,以便于监听触发事件。
下面来分别说明一下三个主体。
1、学生(Student)
这是最简单的主体,我们可以创建一个GameObject,给其添加一个Rigidbody,然后创建一个Script,用刚体组件来控制Student的运动,代码如下:
private Transform m_Transform; private Rigidbody m_Rigidbody; void Start(){ m_Transform=gameObject.GetComponent<Transform>(); m_Rigidbody=gameOnjcet.GetComponent<Rigidbody>(); } //键盘的W、A、S、D分别控制Student的向前、向左、向后、向右移动 void Update(){ if(Input.GetKey(KeyCode.W)){ m_Rigidbody.MovePosition(m_tran.pos+Vec3.for*0.2f); } if(Input.GetKey(KeyCode.A)){ m_Rigidbody.MovePosition(m_tran.pos+Vec3.left*0.2f); } if(Input.GetKey(KeyCode.S)){ m_Rigidbody.MovePosition(m_tran.pos+Vec3.back*0.2f); } if(Input.GetKey(KeyCode.D)){ m_Rigidbody.MovePosition(m_tran.pos+Vec3.right*0.2f); } }
2、门(Door)
门这个物体需要进行的操作就是使用边轴旋转,但是一个物体是不可以移动他的中心点的,所以我们会经常使用在物体外面嵌套一个父物体的方式来实现更改轴线或者中心。注意,我们创建一个空物体之后,需要先将其中心设置在合适的位置,然后再将需要操作的物体拖拽进去。这样在操作父物体实现效果。然后,门的话有两个动作,一个是开,一个是关,代码如下:
private Transform m_Transform;void Start(){ m_Transform=gameObject.GetComponent<Transform>();}void Update(){}//为了使其能在其他Script中调用,需要使用public修饰//开门public void open(){ m_Transform.Rotate(Vector3.up,90);//绕y轴旋转90度}//关门public void close(){ m_Transform.Rotate(Vector3.up,90);//绕y轴反方向旋转90度}
3、触发器(Trigger)
门的触发器需要根据门的形状和需求进行设计,不再赘述。触发器需要进行的操作有两个,一个是检测Student的触发,一个是使Door进行开关动作。具体操作:创建一个空物体,添加一个Rigidbody和一个Collider,并且勾选“is Trigger”,脚本代码如下:
private DoorScript door;void Start(){ //找到门,同时找到其脚本组件 Door,这样就可以通过door调用其脚本的方法 door=GameObject.Find("Door").getComponent<DoorScript>();}//进入触发区域void OnTriggerEnter(Collider coll){ door.open(); //调用开门方法}//离开触发区域void OnTriggerExit(Collider coll){ door.close(); //调用关门方法}
说实话,这是一个简单到不能再简单额示例,之所写这么繁琐,一来是培养我写博客的好习惯,二来是利用写博客的时间在脑中重新梳理一遍解决问题的步骤,因为如果开发大型项目,分析问题的清晰思路是必不可少的。
- 初识Unity 3D——小小小Demo(上)
- 初始Unity 3D——小Demo打砖块
- 初识Unity 3D——常用API(3)
- 初识Unity 3D——常用API(1)
- 初识Unity 3D
- 初识Unity 3D——基本脚本代码
- 初识Unity 3D——认识材质球、贴图
- 初识Unity 3D——TrialRenderer、LineRenderer、AduioClip
- 初识Unity 3D——飞盘射击案例(1)
- Unity 3D中的射线(上)
- Unity 3D网页游戏 Demo 展示
- 小小上拉加载更多的DEMO——桃先森_
- 【Unity 3D】学习笔记二十九:游戏实例——简单小地图制作
- Unity 3D UV实现小地图
- Mr.Smile填坑记——Unity 3D直接将游戏运行到安卓手机上
- unity普通的3D地图+人物行走demo
- 初识Android之(二)- 实现Service AIDL小Demo
- Unity - 2D入门,今天我的第一个小Demo发布啦
- SyntaxError: identifier starts immediately after numeric literal
- 5-3 旅游规划
- 微信小程序学习(二)之scroll-view组件
- CICS Abend AD2R
- 上下文切换详解
- 初识Unity 3D——小小小Demo(上)
- Java1.5语法糖的味道--泛型与擦除小结(三)
- 第1个人年龄为10,以后依次加2,递归计算第N个人的年龄
- 用hql对查询的数据排序
- CSS之Sprites
- Unix或Linux中&、jobs、fg、bg等命令的使用方法
- 开灯问题
- linux操作系统概述
- 感恩节-1124