unity初识3
来源:互联网 发布:linux for循环用法 编辑:程序博客网 时间:2024/05/29 19:15
1.模型导入、动画播放
(1)unity支持大部分高端的3D动画软件,方便导入,导出选择FBX导出(2)如果给你的动画集是没有切出来,我们如何剪辑? <1>导入模型 <2>选中模型—>在属性面板中设置Rig->leggacy查看所有动画 <3>Animation-->切割动画 <4>播放选项Wrap Mode-----------loop循环 注:clips—>剪辑(3)通过克隆游戏对象,并给游戏对象上脚本(4)常用动画 播放剪辑动画---组件.Play(剪辑名) 设置动画播放速度---组件[剪辑名].speed
2.ITween动画
(1) 导入两个C#写好的脚本ITween 和iTweenPath(路径—>一般在游戏开发中加载到相机上,做游戏的开场动画)
(2) 根据API文档查看,这里简单介绍3个
移动:iTween.MoveBy(gameObject, iTween.Hash("x", 5, "easeType", "easeInOutExpo", "loopType", "pingPong", "delay", .1));旋转:iTween.RotateBy(gameObject, iTween.Hash("x", .25, "easeType", "easeInOutBack", "loopType", "pingPong", "delay", .4));按路径移动:iTween.MoveTo(gameObject,iTween.Hash("path",iTweenPath.GetPath("go1"),"time",20,"easetype","linear"));
3.物理引擎之刚体
物理引擎指模拟真实世界物理碰撞等反应的引擎刚体属性(rigidbody)标明物体受物理影响,含重力,阻力等Mass:质量,Drag摩擦系数,Gravity重力,kinematic运动学 Freeze冰冻给刚体加'力',不给就默认null----->代码中调用AddForce(方向*力(向量),力的模式(Impulse等))实现
4.碰撞检测
(1)碰撞器:
静态碰撞器:内置提供了多种形状的碰撞器
刚体碰撞器:添加了刚体的碰撞器
运动学碰撞器:在刚体上勾选了Is Kinematic,这时只能通过transform改变位置,而不能通过加力改变位置
(2)碰撞的条件:
需要两个游戏对象都有静态碰撞器
至少一个游戏对象有刚体碰撞器
(3)碰撞消息
<1>两种类型
触发Trigger,非触发Collision(区别,前者检测碰撞但没有力的作用,后者检测力的作用)
<2>三种状态
碰撞消息的3种状态:Enter,Stay,Exit
对于非触发的碰撞消息,可以通过Collision对象获取碰撞的点
<3>物理材质
1.创建一个物理材质(phicsMaterial)
2.Bounciness 弹性 Friction摩擦系数(静,动) combine 合并
(4)测试代码
using UnityEngine;using System.Collections;public class ForceTest : MonoBehaviour { private Rigidbody rigidbody; // Use this for initialization void Start () { rigidbody = GetComponent<Rigidbody>(); } // Update is called once per frame void Update () { if(Input.GetKey(KeyCode.Space)) { //添加力 /*rigidbody.AddForce(new Vector3(1,1,0)*5,ForceMode.Impulse);//牵引力一直存在,脉冲力*/ //移动的方式:速度 rigidbody.velocity = Vector3.up * 1f; //mesh网格 } } //碰撞时,会触发消息,共两种:Collision Trriger //碰撞的消息分为三种状态:开始enter 中stay 结束Exit //collider参数表示被碰撞的物体的碰撞体(plane) void OnCollisionEnter(Collision collider) { //collision.gameObject; Debug.Log("Collision"); } void OnTrrigerEnter(Collision collider) { Debug.Log("Trriger"); }}
5.射线
1.认识:
从摄像机射出一条线,在多重模型下,它就以最眼前的模型碰撞,其他不发生碰撞。一般使用射线判断鼠标点击,发射至某个游戏对象等。
2.测试代码:
using UnityEngine;using System.Collections;public class RayTest : MonoBehaviour { // Use this for initialization void Start () { } // Update is called once per frame void Update () { if(Input.GetMouseButtonDown(0)) { Ray ray = Camera.main.ScreenPointToRay(Input.mousePosition);//射线位置 RaycastHit hit;//射线碰的对象 //发射射线 Physics.RayCast //射线,返回对象,射线长度 层 if(Physics.Raycast(ray,out hit,20,1<<8|1<<9)){ Destroy(hit.collider.gameObject); } } }}
6.测试代码:打箱子小游戏
1.给空游戏对象添加脚本
using UnityEngine;using System.Collections;public class HitBox : MonoBehaviour { public GameObject Box;//接受预置对象 public GameObject Bullet; public Texture2D Cursor1; // Use this for initialization void Start () { for(int i =0;i<5;i++)//i表示行 { for(int j=0;j<5;j++)//j表示列 { GameObject box = Instantiate(Box) as GameObject; box.transform.position = new Vector3(-2f + i, 0.5f + j, 4.5f); } } //设置焦点 //选中纹理-->改变Texture Type为cursor做焦点-->使用(apply) Cursor.SetCursor(Cursor1,new Vector2(Cursor1.width/2f,Cursor1.height/2f),CursorMode.Auto);//图片中心和鼠标重合 } // Update is called once per frame void Update () { if(Input.GetMouseButtonDown(0)) { //获取鼠标位置 Ray ray = Camera.main.ScreenPointToRay(Input.mousePosition); //返回碰撞的对象 RaycastHit hit; //通过物理时间来发射射线 if(Physics.Raycast(ray,out hit)) { //给力和速度 须是刚体 GameObject bullet = Instantiate(Bullet) as GameObject; bullet.transform.position = Camera.main.transform.position; //point bullet.GetComponent<Rigidbody>().velocity =(hit.point- bullet.transform.position)*3;//向量(末-初)给大小,方向(射线) } } }}
2.给两个碰撞体添加脚本
using UnityEngine;using System.Collections;public class DestroyObj : MonoBehaviour { // Use this for initialization void Start () { } // Update is called once per frame void Update () { } void OnBecameInvisible() { // 当退出视野时 销毁当前的游戏对象 Destroy(gameObject); }}
阅读全文
0 0
- 初识Unity 3D
- unity初识3
- Unity初识
- 初识Unity
- unity初识
- 初识Unity
- Unity学习笔记(3) --- Unity的界面排版:初识GUILayout
- Unity初识iTween
- Unity初识(1)
- Unity初识1
- Unity初识2--NGUI
- Unity3D-初识Unity
- 初识Unity 3D——常用API(3)
- 初识Unity 3D——基本脚本代码
- 初识Unity 3D——认识材质球、贴图
- 初识Unity 3D——TrialRenderer、LineRenderer、AduioClip
- 初识Unity 3D——常用API(1)
- Unity之Shader初识 - 一
- PHPRAP1.0.1发布了,修复nginx服务器和PHP7环境下安装失败的bug,支持MOCK服务
- 【Oracle-JSP-Eclipse】已经引入jar包并且build path了,还是提示java.lang.ClassNotFoundException之类的错误
- Python基础操作回顾
- 1005 装载问题
- PAT乙级1036. 跟奥巴马一起编程(15)
- unity初识3
- 后端Java一年经验和技术记录
- PAT乙级1037. 在霍格沃茨找零钱(20)
- Java算数运算符、关系运算符、逻辑运算符
- PAT乙级1038. 统计同成绩学生(20)
- Java字符串等于判断
- PAT乙级1039. 到底买不买(20)
- 函数栈帧创建与销毁那些事儿
- js实现简单拖拽案例