动画事件
1.延迟调用
2.动画事件:相对而言更准确
//脚本挂载在物体上,通过动画事件调用
public void OnAnimationEnd(int p){
if(p==0){
//动画开始
}
else{
//动画结束
}
}
Animator
动画控制器,控制很多动画的播放、切换、管理。
注意:一般手动创建。
添加参数控制动画跳转
float、bool、int:通过值的大小不同进行触发
trigger:trigger触发时切换
HasExitGame
勾选时,若条件满足不会立刻跳转,而是根据设置延迟退出。
Animator分层
几个Layer层的动画同时播放。
weight:权重,0不播放,1播放。0.5播放次数是1的一半。
作用:将运动和攻击分层,通过layer的组合来设计出更多的状态。
物理引擎
RigidBody
isKinematic:是否受外力影响
Collision Detection:检测频率
不连续、连续等,性能消耗依次增加,检测越来越细致。
Info:查看当前钢体的信息
//物理相关的运算放入FixedUpdate
void FixedUpdate(){
//AddForce力的作用为中心
//ForceMode:加速度、力、冲量、速度
//每秒为1的加速度进行运行
rigidbody.AddForce(Vector3.right,FoeceMode.Acceleration);
//每秒为1N,F = ma。此处效果和上面相同。
rigidbody.AddForce(Vector3.right,FoeceMode.Force);
//I = Ft=mv
rigidbody.AddForce(Vector3.right,FoeceMode.Impulse);
//改变速度,相当于直接修改rigidbody的速度属性
rigidbody.AddForce(Vector3.right,FoeceMode.VelocityChange);
//AddForceAtPosition:对某点施加力
AddForceAtPosition(Vector3.up,point.position,FoeceMode.Impulse);
//添加爆炸力
rigidbody.AddExplosionForce(1000,point.position,FoeceMode.Impulse);
}
public Rigidbody[] cubes;
public int radius;
void Update(){
if(Input.GetMouseButtonDown(0)){
//向屏幕前方发射一条射线
Ray ray = Camera.main.ScreenPointToRay(Input.mousePosition);
//
RayCastHit raycastHit;
if(Physics.Raycast(ray,out raycastHit)){
if(raycastHit.colider.transform.tag=="ground"){
//raycastHit.point射线交点
//raycastPoint.transform.position = raycastHit.point;
foreach(Rigidbody rd in cubes){
rd.AddExplosionForce(1000,raycastHit.point,radius);
}
}
}
}
}
void Start(){
//不会改变速度之类的信息
rigidbody.MovePosition(Vector3.up*Time.deltaTime);
rigidbody.MoveRotation(target.rotation);
}
Colider
碰撞体形状
- 各种形状的碰撞
- MeshColider:精确描述碰撞
物理材质:PhysicalMaterial
从上到下:
动摩擦、静摩擦、反弹
Joint
将多个组件进行连接:
链条关节、固定关节、弹簧关节、角色关节(模拟骨骼)、可配置关节
模拟绳子、链条。
动态加载资源
先创建Resources文件夹
GameObject go = Resources.load<GameObject>("folder/cube");
//此外、音效、材质都可以这样加载
go.GetComponent<MeshRender>().material = Resources.load<Material>("Material/material1");
2D场景
Camera
Clear Flags
Skybox:Render–Lighting Settings显示天空盒
solidColor:显示固定的颜色
Depth only:通过修改depth,可以显示多个相机的视野
Don’t Clear:每一帧显示的画面不清除
Culling Mask
渲染的层级
View Port
修改相机渲染的范围
Projection
Perspective:透视
Orthographic:正交
size
相机的范围,渲染的尺寸。
Sprite Render
Sprite
显示的图片
Color
颜色
Flip
图片的翻转效果
Drawmode
拉伸、平铺、切片
渲染顺序
Sorting Layer:大的渲染顺序。
Order In Layer:上面相同时,根据此顺序渲染。
TileMap:瓦片地图
2D Tilemap Render
TileMapColider2D
给Tilemap添加碰撞器
UsedByComposite:
勾选时只有边缘有碰撞体,要配合Composite Colider2D使用
TileRule(插件)
Rule Tile添加规则,设置周围有无其他瓦片来决定瓦片具体选择哪种图形。