1.配置小鸟于棍子的距离 弹簧的弹性
2.加了个碰撞体 实现小鸟【世界】和鼠标【局部】的交互(注意世界坐标和局部坐标)
3.限制拖拽的最大距离(maxDis)
if (Vector3.Distance(transform.position,rightPos.position) > maxDis) //进行位置限定
{
Vector3 pos = (transform.position - rightPos.position).normalized;//单位化向量
pos *= maxDis;//最大长度的向量
transform.position = pos + rightPos.position;
}
4.小鸟的飞出(但飞出去太猛了)
是否开启动力学 不受物理元素的控制了
private void OnMouseUp()
{
isClick = false;
rg.isKinematic = false;
Invoke("Fly",0.1f); // 0.1秒之后开启动力学
}
void Fly()
{
sp.enabled = false;
}
5.裁草地 添加碰撞盒
6.猪的受伤
猪也有个阻力(Angular Drag)配置为2 不然猪和鸟都滑下去了
受伤图在Sprite Renderer 组件里面
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
public class Pig : MonoBehaviour {
public float maxSpeed = 10;
public float minSpeed = 5;
private SpriteRenderer render;
public Sprite hurt;
private void Awake() //获取组件
{
render = GetComponent<SpriteRenderer>();
}
private void OnCollisionEnter2D(Collision2D collision)
{
if (collision.relativeVelocity.magnitude > maxSpeed) //死亡消失
{
Destroy(gameObject);
} else if (collision.relativeVelocity.magnitude > minSpeed && collision.relativeVelocity.magnitude < maxSpeed) //受伤
{
render.sprite = hurt;
}
}
}