针的插入
public class Pin : MonoBehaviour
{
public float speed = 5;//移动速度
private bool isFly = false;//表示是否发射针到小球中
private bool isReach = false;//表示针是否到达指定的发射位置
private Transform StartPoint;//小球的就位位置
public Transform circle;//获取小球
void Start ()
{
StartPoint = GameObject.Find("StartPoint").transform;
//circle = GameObject.Find("Circle").transform;
circle = GameObject.FindGameObjectWithTag("Circle").transform;//通过标签查找小球,跟上面的等价
}
void Update ()
{
if (isFly == false)
{
if (isReach == false)
{
transform.position = Vector3.MoveTowards(transform.position, StartPoint.position, speed * Time.deltaTime);//控制针移动到startPoint
if (Vector3.Distance(transform.position, StartPoint.position) < 0.05f)//判断是否到达
{
isReach = true;
}
}
}
else
{
transform.position = Vector3.MoveTowards(transform.position, circle.position, speed * Time.deltaTime);//控制针移动到startPoint
}
}
public void StartFly()//控制针的飞行
{
isFly = true;
isReach = true;
}
}
在GameManager脚本中控制针的插入,插入小球的位置有误,脚本后期完善
public class GameManager : MonoBehaviour
{
private Transform StartPoint;//针的发射点
private Transform SpawnPoint;//针的生成点
public GameObject pinPrefab;//针的预设物,需要拖拽
private Pin currentPin;//获取当前针,以方便调用方法
void Start ()
{
StartPoint = GameObject.Find("StartPoint").transform;
SpawnPoint = GameObject.Find("SpawnPoint").transform;
SpawnPin();
}
private void Update()
{
if (Input.GetMouseButton(0))
{
currentPin.StartFly();//调用飞行的方法
}
}
void SpawnPin()
{
currentPin= GameObject.Instantiate(pinPrefab,SpawnPoint.position,pinPrefab.transform.rotation).GetComponent<Pin>();
}
}