Unity入门(三)——Unity2D 常用组件与函数生命周期

动画事件

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

碰撞体形状

  1. 各种形状的碰撞
  2. 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添加规则,设置周围有无其他瓦片来决定瓦片具体选择哪种图形。

猜你喜欢

转载自blog.csdn.net/weixin_43399489/article/details/115247480