毒圈分3层,随机下一个位置缩圈,没错缩小直径100m
时间: 2024-01-03 15:05:15 浏览: 59
好的,下面是一个修改过的Unity C#脚本,可以实现毒圈分3层,随机下一个位置缩圈,缩小直径100m的功能:
```csharp
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
public class PoisonCircle : MonoBehaviour
{
public float circleRadiusLayer1 = 300.0f; // 毒圈第一层半径
public float circleRadiusLayer2 = 200.0f; // 毒圈第二层半径
public float circleRadiusLayer3 = 100.0f; // 毒圈第三层半径
public float circleSpeed = 1.0f; // 毒圈缩小速度
private CircleCollider2D circleCollider; // 毒圈的碰撞器
private float nextCircleRadius; // 下一个毒圈的半径
// Start is called before the first frame update
void Start()
{
circleCollider = GetComponent<CircleCollider2D>();
// 随机下一个毒圈的半径
nextCircleRadius = Random.Range(circleRadiusLayer2, circleRadiusLayer1);
circleCollider.radius = nextCircleRadius;
}
// Update is called once per frame
void Update()
{
if (circleCollider.radius > circleRadiusLayer3)
{
circleCollider.radius -= circleSpeed * Time.deltaTime;
}
else if (circleCollider.radius > circleRadiusLayer2)
{
if (nextCircleRadius == circleRadiusLayer2)
{
// 下一个毒圈已经到达第二层,直接缩小到第三层
circleCollider.radius = circleRadiusLayer3;
}
else
{
// 随机下一个毒圈的半径,缩小到第二层
nextCircleRadius = Random.Range(circleRadiusLayer3, circleRadiusLayer2);
circleCollider.radius = nextCircleRadius;
}
}
else if (circleCollider.radius > circleRadiusLayer1)
{
if (nextCircleRadius == circleRadiusLayer1)
{
// 下一个毒圈已经到达第一层,直接缩小到第二层
circleCollider.radius = circleRadiusLayer2;
}
else
{
// 随机下一个毒圈的半径,缩小到第一层
nextCircleRadius = Random.Range(circleRadiusLayer2, circleRadiusLayer1);
circleCollider.radius = nextCircleRadius;
}
}
else
{
// 毒圈已缩小到最小值,处理游戏结束逻辑
}
}
}
```
这个脚本和之前的脚本类似,不同之处在于我们添加了三个变量`circleRadiusLayer1`、`circleRadiusLayer2`、`circleRadiusLayer3`,分别表示毒圈的三层半径,以及一个`nextCircleRadius`变量,表示下一个毒圈的半径。在`Start`函数中,我们随机设置下一个毒圈的半径,并将碰撞器的半径设置为下一个毒圈的半径。
在`Update`函数中,我们首先判断当前毒圈属于哪一层,如果在第一层,则继续缩小直到到达第二层,如果在第二层,则随机下一个毒圈的半径并缩小到第三层,如果在第三层,则随机下一个毒圈的半径并继续缩小。最后,当毒圈缩小到最小值时,我们可以在`Update`函数中添加游戏结束的逻辑处理。