camera
camera
9.Dynamic, Kinematic;Spring Joint 2D 禁用;
09-小鸟的飞出
其实就是使【Spring Joint 2D 组件】失活
1.获取到组件
public SpringJoint2D sp;
在Awake()下进行获取
private void Awake()
{
sp = GetComponent<SpringJoint2D>();
}
2.鼠标抬起,失活
private void OnMouseUp() //鼠标抬起
{
isClick = false;
sp.enabled = false;
}
}
3.小鸟飞出速度过快
小鸟【Rigidbody 2D】中的【Body Type】参数改成【kinematic】
3-1:在脚本里更改
protected Rigidbody2D rg;
private void Awake()
{
sp = GetComponent<SpringJoint2D>();
rg = GetComponent<Rigidbody2D>();
}
3-2:鼠标按下
private void OnMouseDown()//鼠标按下
{
isClick = true;
rg.isKinematic = true;
//Kinematic :运动
}
鼠标抬起
private void OnMouseUp() //鼠标抬起
{
isClick = false;
rg.isKinematic = false;
sp.enabled = false; //粘贴到Fly()中
}
4.小鸟飞出后的操作
void Fly()
{
sp.enabled = false;
}
4-1:让电脑零点1、2秒时间计算
需要用到【Invoke函数】
Invoke("方法名",多长时间调用)
private void OnMouseUp() //鼠标抬起
{
isClick = false;
rg.isKinematic = false;
Invoke("Fly", 0.1f);
}
bu fei chu
Invoke(方法,时间);//延迟
//小鸟飞出=鼠标松开,弹簧组件关闭
SpringJoint.enabled = false;
//小鸟飞过快=刚体Body Type->isKinematic
rigidbody2D.isKinematic = true;
Onmouthdown
onmouthup
06不是太懂
Awake 启动时调用次函数
小鸟的废除
让组件失活 鼠标抬起的时候,将组件失火。
kinematic 是否开启物理学,不会受到物理的重力影响,刚体脱离物理的重力。不受物理控制。
rigibody2d. iskinectmatic 不受物理的影响?
2d物体需要移动,但不接受力的作用,
dynamic 全套的运动属性,
kinematic 仅在非常明确的用户控制下进行移动。不受重力和作用力影响,kinematic 只能通过transfrom 影响,不会受到其他物理效果。
static 静态不懂得。
意思是在松开之后,0.1s后开始计算弹簧给的力,之前不jin'xin
Rigidbody:
Body Type :Dynamic
Kinematic :开启动力学,不受
小鸟的发出
private SpringJoint2D sp;
private Rigidbody2D rg;
private void Awake(){
sp=GetComponent<SpringJoint2D >();
rg=GetComponent<Rigidbody2D >();
}
void Fly(){
sp.enable=false;
}
鼠标按下时开启动力学
private void OnmouseDown(){
isClick =true;
rg.isKinematic=true;
}
鼠标抬起时关闭动力学
private void OnmouseUp(){
isClick =true;
rg.isKinematic=false;
//设置飞出的延时
Invoke(“方法名Fly”,o.1f(时间(不要太长)))
}
//飞出
在Spring Joint2D
在Rigidbody2D 的Body Type设置成Kinematic开启动力学不受物理控制
设置延时调用 用到 Invoke(“方法名Fly”,o.1f(时间(不要太长)))
让SpringJoint2D弹簧组件失活,小鸟即可飞出
rg.isKinematic = true;//开启动力学,不受物理控制
因为在拖拽小鸟的过程中,小鸟的位置是由代码中的position自定义所确定,所以该过程中应该将小鸟设置为isKinematic
private SpringJoint2D sp;
private void Awake(){
sp=GetComponent<SpringJoint2D>();
}
private Rigidbody2D rg;
rg=Getcomponent<rigidbody2D>();
void Fly(){
}
让小鸟飞出去就是让Spring Joint2d失活
就是在鼠标抬起之后让这个组件没有用
但是飞出去之后速度有点大
在Rigidbody 2d里面有一个Body Type
Body Type里面有一个Kinematic
Kinematic:是否开启动力学
开启之后就不会受到一些物理元素的控制了,比如不会受弹簧的那个力的影响了,这样飞出去之后速度就不会很大
所以得让Spring Joint2d失活在在Kinematic开启的后面
这时候需要一个延时函数
延时函数:Invoke("方法名",时间值)
时间值是float类型
Spring Joint2d里的Damping Radio
Damping Radio:阻尼系数
阻尼系数越大弹簧弹力越不明显
范围是0到1
当我们想要获取 物体相应的组件
在vs stdio 中先声明一个跟组件一样的变量
用getcomponent 去调用相应的组件
组件应该是private的访问类型
我想知道 getcomponent这个函数的
<>()中的所对应的形参
啥叫不受物理控制
应该是不受物理组件控制
spring jonint
awake
FLy()
让小鸟失活就可以飞出
awake获取SpringJiont2D组件
SpringJiont2D函数,调用设定enabled为false的时候就失活飞出
rigidbody type的kinematic是动力学,不进行物理计算
小鸟的飞出