bird
RigidBody 2D
Angular grag 1=>2减速类似空气阻力(脚阻力)
collision.relativeVelocity.magnitude//相对速度
bird
RigidBody 2D
Angular grag 1=>2减速类似空气阻力(脚阻力)
collision.relativeVelocity.magnitude//相对速度
Unity 2017.2.0f3
LineRenderer画出的线是3D物体,无法识别2D场景中的layer层级问题
因为在拖拽小鸟的过程中,小鸟的位置是由代码中的position自定义所确定,所以该过程中应该将小鸟设置为isKinematic
private SpringJoint2D sp;
private void Awake(){
sp=GetComponent<SpringJoint2D>();
}
private Rigidbody2D rg;
rg=Getcomponent<rigidbody2D>();
void Fly(){
}
public Transform rightPos;
public float maxDis=3;
if(vector3.Distance(transform.position,rightPos.postion)>maxDis){//进行位置限定
vector3 pos=(transform.positon-tightPos.position).onrmalized;//单位化向量
pos*=maxDis;//最大长度的向量
transform.position=pos+rightPos.position;
}
private bool is Click=false;
isClick=ture;
isClick=flase;
if(isClick){//鼠标移至按下,进行位置的跟随
transform.position=camera.main.ScreenTowrLdpoint=Input.mousePostion;
}
这里再次用到Sprite,和SpriteRender
这两个东西怎么用呢?
设置:2d -> 3D ,3分钟
裁切图:整图,裁切图, 7分钟
元素分层显示:9分
本来想用
Parallel.ForEach<Pig>(blocks, x =>
{
x.Dead();
});
但是报错:
get_transform can only be called from the main thread.
看来Unity中使用多线程还是有很多限制的
我这里补充一下,其实动画出现missing的主要原因就是因为Image重命名为了bg,重命名之后就找不到Image这个对象了。感觉这是Unity的一个Bug,重命名竟然不会全局改!
记一下 3d转2d的摄像机的投影改 正交是必须勾上的
为小鸟添加了 circle collider 2D圆形碰撞监测器
spring joint 2D 弹簧关节组件
rigibody 2D的type属性设置为static,静态组件
另一种思路:
transform.position = rightPos.position + Vector3.ClampMagnitude(transform.position-rightPos.position, maxDis);
存在设定鼠标事件后,点击按钮没有触发的现象
经查是删除了EventSystem,
重新添加后修复
missing原因可能是创造完动画后对象重命名,导致重新获取失效
此处限制最好围绕鼠标事件,而不是实时刷新的Update方法,因为小鸟的状态应该是一次性的,在销毁前起作用,而不是Update时有用且NextBird时又恢复启用