135
135
v2是向量,可以存储朝向
可以存储float,可以表示相应坐标的
mathf.Approximately(值1,值2)判断一下是否近似相等
Normalize()
方法用于将向量(这里的 lookDirection
应该是一个向量对象)归一化。
归一化的意思是,把向量的长度(模长)变为 1,同时保持向量的方向不变。
move.magnitude(取move的模长)
混合树:
用于允许通过按不同程度组合所有动画的各个部分来平滑混合多个动画。
各个运动参与形成最终效果的量使用混合参数进行控制,
该参数只是与动画控制器关联的数值动画参数之一,要使混合运动有意义,混合的运动必须具有相似性和时间。
混合树是动画控制器中的特殊状态类型
混合树可以用一或多个条件控制动画的播放
其原理类似坐标系,让动画均匀的分布在八个方向
使用GetComponent<组件名>()获取对应的组件类型
animator.set
//animator.SetFloat("Test"(参数名),0.5f(改变成什么));
//animator.SetBool("Bool"(参数名), false(改变成什么))
//animator.SetInteger("Int"(参数名), 33(改变成什么))
//animator.SetTrigger("Trigger")
//Trigger是触发器,不需要写改变什么,写名字触发即可,注意名字千万不要写错
同时满足多个条件会按照顺序执行,有优先级的
但是一般不会这样设计
不理解什么叫预制体的,你吃的预制菜就是预制体
判断看向
Animator面板:
1.layers:层级面板,在3d常用,常见于两个动画的重合
2. Auto Live link:播放按个就聚焦到哪个
在操作选中物体时创建动画,动画会直接加入该角色的状态机。
直接创建状态机时,要额外吧动画文件拖入该物体状态机。
方法1:在animation面板里创建
方法2:右键在文件夹处创建
方法3:选中图片直接拖进去
animator面板:
块块代表动画的文件和速度
箭头代表过度
点击箭头后的inspector面板
1.Has Exit Time:播放完这个之后是否播下一个
2. Exit Time:这个动画播多久开始播下一个
3. Transition Duration:过度时间多少
过度问题大多存在于
动画(Animation)
unity中的动画资源,可以由动画控制器,代码去进行播放,也是一种组件
2d图片能够渲染是基于精灵组件
动画组件能够进行颜色变化、缩放变化、旋转变化
preveiw为预览
samples为速度,越大越快,越小越慢
点击录制(红色的小圆点)直接就能改变应用到动画资源上
Animator Contorller:根据当前游戏对象的状态控制播放对应的游戏动画,也叫动画状态机
访问级别的用法
函数的调用,声明、签名、重载
变量的赋值顺序
触发器
触发检测
实战血瓶
各种运算符,访问组件、物体、怎么通过访问其他组件
属性内容
属性对对象的作用和意义为:限制来自外部的访问和修改
经典
Destroy(gameObject);
直接销毁即可
gameobject,就是脚本挂载的游戏对象,是 unity内置的
脚本里访问的组件都是该物体的组件
获得了luna的对象,即可以通过
对象名.object,获取这个对象的物体,进而销毁:Destroy(对象名.gameObject);
百分之八十的错误,控制台都能说的很清楚
collision 是露娜身上的一个组件,有一个可以获取的组件,就一定可以获取其他组件
输出的信息检测到的是 Boxcollider2d的组件,2d有很多内容,boxcollider是其中一种
获取对象的其中一个属性(分支),我们就可以通过这个分支,获取整个对象
对象名.GetComponene<对象类名>();
触发检测的必要条件
1. 都要有碰撞器
2. 其中一方有刚体(最好运动)
3. 其中一个boxcollider一定是触发器
(把boxCollider 下面的 is Trigger 勾选)
触发器是触发某些事情的机关(机关、事件、事情)吃血包会回血,触发boss战
很多业务逻辑需求都要用触发器
有触发器,脚本里才能有作用,接触一次,触发一次
unity脚本只要有函数,就自己帮你调用了,原理不用管,知道干嘛的就行(能开发引擎再说)
先后顺序的问题,可能会造成项目直接崩盘
2. 在代码里写的赋值顺序
先执行代码
1.在显示面板的赋值顺序
再执行显示面板
3. start方法的赋值顺序
再实行start
4. update方法的赋值顺序
update 一定是最后执行的
三个地方只在一个地方赋值,要么在最开始赋值、要么在检视面板里调,huo
返回值void只会执行代码,不会有返回值
可以给函数上返回值
函数签名(访问级别、返回值、名字、参数)
函数可以重载,只是参数不同,但是不可以有两个参数相同的函数。知道大概的函数是做什么的就可以,哈桑农户的重载是
定义了最大生命值
访问级别:所有类型和类型成员都具有可访问级别,用来判断是否可以允许我们访问某些成员变量和方法。可使用访问修饰符来指定生命类型或成员的可访问性
public公共的 可以外部访问,会显示到面板
private私有的 只用于内嵌类或成员的
protect保护的 只用当前类 或子类中
int 存整数的类型
float 存小数的类型
所有准备工作放到start(),告诉他初始是什么
c#默认的访问修饰符是private,不加也没问题,但还是加上比较好,加上之后更清晰,更容易理清
自定义方法
级别 + 类型 + 名称(参数)
名称尽量使用动词,首字母大写
unity 的物理系统,模拟现实的碰撞,受力
righidbody(刚体组件),使游戏物体可受力,重力,扭力等等。(刚体不发生碰撞检测,不运动会休眠的,所以只挂载在运动物体即可)
刚体也能发生角度旋转,改变组件constraints锁定组件
boxcollider 2D组件(碰撞器组件)
自己编写的代码和物理系统的代码有冲突,所以用物理系统的代码进行输出即可
静态方法是用 类名.方法名(参数),全局访问,不用实例
普通方法是对象名 . 方法名字
编辑体,