LOL施法距离,普攻距离范围计算
2015年03月20日 11:55
1 点赞
0 评论
更新于 2025-11-21 17:50
效果图
(此处原文未给出具体效果图相关有效信息,可后续补充完整的效果图展示)
代码实现
以下是使用Unity引擎实现绘制圆形范围的代码,该范围可用于模拟LOL中的施法距离、普攻距离等。
using UnityEngine;
using System.Collections;
using System.Collections.Generic;
public class CDrawLine : MonoBehaviour
{
// 点数,用于控制圆形的精度,点数越多圆形越平滑
public int pointCount = 10;
// 距离,即范围半径
public float radius = 10f;
// 每个点之间的角度
private float angle;
// 存储圆形上每个点的位置
private List<Vector3> pointList = new List<Vector3>();
// 用于绘制线条的组件
private LineRenderer render;
// 是否显示绘制的线条
public bool showRenderer = false;
// 初始化方法,在脚本实例被启用时调用
void Start()
{
// 计算每个点之间的角度
angle = 360f / pointCount;
// 获取当前对象的LineRenderer组件
render = this.GetComponent<LineRenderer>();
}
// 更新方法,每帧调用一次
void Update()
{
if (showRenderer)
{
// 设置LineRenderer的顶点数量,额外加1是为了闭合圆形
render.SetVertexCount(pointCount + 1);
// 计算第一个点的位置
Vector3 vect3 = transform.position + transform.forward * radius;
pointList.Add(vect3);
// 获取当前对象的旋转信息
Quaternion rotation = transform.rotation;
// 计算其余点的位置
for (int i = 1; i < pointCount; i++)
{
// 求出第i个点的旋转角度
Quaternion quat = Quaternion.Euler(rotation.eulerAngles.x, rotation.eulerAngles.y - (angle * i), rotation.eulerAngles.z);
// 计算第i个点的位置
vect3 = transform.position + (quat * Vector3.forward) * radius;
// 将第i个点的位置添加到列表中
pointList.Add(vect3);
}
// 绘制线条
for (int j = 0; j < pointList.Count; j++)
{
// 设置LineRenderer上每个顶点的位置
render.SetPosition(j, pointList[j]);
}
// 闭合圆形,将最后一个顶点的位置设置为第一个顶点的位置
if (pointList.Count > 0)
render.SetPosition(pointCount, pointList[0]);
}
else
{
// 不显示时,将顶点数量设置为0
render.SetVertexCount(0);
}
// 清空存储点位置的列表
pointList.Clear();
}
}
代码解释
变量定义:
pointCount:控制圆形的精度,点数越多,圆形越接近真实的圆形。radius:表示圆形的半径,可用于模拟施法距离或普攻距离。angle:每个点之间的角度,通过360度除以点数计算得出。pointList:用于存储圆形上每个点的位置。render:LineRenderer组件,用于绘制线条。showRenderer:控制是否显示绘制的线条。
Start方法:- 计算每个点之间的角度。
- 获取当前对象的
LineRenderer组件。
Update方法:- 根据
showRenderer的值决定是否绘制线条。 - 当
showRenderer为true时,计算圆形上每个点的位置,并将其设置到LineRenderer上,最后闭合圆形。 - 当
showRenderer为false时,将LineRenderer的顶点数量设置为0。 - 清空存储点位置的列表,以便下一帧重新计算。
- 根据
通过以上代码,我们可以在Unity中实现一个简单的圆形范围绘制,用于模拟LOL中的施法距离和普攻距离。