一、 制作被插针的圆球
新建一个圆,添加碰撞体、刚体,选择kinematic不受重力
![在这里插入图片描述](https://img-blog.csdnimg.cn/8a95a7076a2f488ea44d3cafa5276574.png)
添加自转脚本,设置速度,添加标签Spin
void Update()
{
transform.Rotate(0,0,speed*Time.deltaTime);
}
二、 制作针
添加碰撞体、刚体、设置碰撞体边界、设置触发器、添加标签Pin
![在这里插入图片描述](https://img-blog.csdnimg.cn/7ffd33f5d1c240cea472daddfeae4f1a.png)
针向上运动,扎在球上
transform.position += Vector3.up * speed * Time.deltaTime;
扎在球上,碰撞一次,针和球融为一体,SetParent()方法
if(collision.gameObject.tag == "Spin")
{
isPined = true;
this.transform.SetParent(collision.gameObject.transform);
}
新的针不能碰撞到已经在球上的针头。
如果撞到针头,界面设置成红色、球旋转速度变慢、等待1秒重新启动场景
if (collision.gameObject.tag == "Pin"){
Camera.main.backgroundColor = Color.red;
StartCoroutine(RestartLv());
sp.speed= 50f;
}
IEnumerator RestartLv()
{
yield return new WaitForSeconds(1f);
SceneManager.LoadScene(SceneManager.GetActiveScene().name);
}
![在这里插入图片描述](https://img-blog.csdnimg.cn/58a432fc912b4567817c999b73d909be.png)
三、 设置发射点
添加一个发射针头的位置,添加脚本,生成针头
发射一次,响应一声音效
void Update()
{
if (Input.GetButtonDown("Fire1"))
{
Instantiate(pin);
audioSource.PlayOneShot(soundClip);
}
}
四、 设置关卡,不同关卡不同难度
每一关设置目标分数,倒计时的方式
if (!gameover&&AAGM.score>0)
{
AAGM.score= AAGM.score-1;
}
达到了目标分数,加载下个场景,进入下个关卡,设置转速
void Update () {
scoreText.text = score + " ";
if (score == 0)
{
SceneManager.LoadScene(next);
}
}
![在这里插入图片描述](https://img-blog.csdnimg.cn/b72c52aef004418090d14af7a60f8c86.gif)
五、 下载项目文件