Moba中的弧线轨迹 子弹、人物绕某点弧线移动以及技能指示器绘制办法

本文介绍了在Moba游戏中如何通过编程实现人物或子弹的圆弧轨迹,以及轨迹指示器的制作方法,以LoL皎月的Q技能为例,详细展示了计算圆心、速度、加速度和圆弧比例的伪代码,并给出了Unity中的Gizmos实现。
摘要由CSDN通过智能技术生成

Moba游戏中一些情况需要用到弧线轨迹 例如lol中皎月的Q
在这里插入图片描述
下面分享一种轨迹和指示器的制作思路

在这里插入图片描述

圆弧轨迹实际是人物、子弹绕某点进行圆周运动,
人物位置确定 技能方向dir也是定制 在设计中位移半径也是定值,当某点确定时 ,圆可确定,速度 加速度和位移时间只决定了圆的完整性 弧度对此圆的占比
所以人物 子弹 track伪代码如下

local x= 表track[1]
local y= 表track[2]
local speedx=表track[3]
local aspeedx=表track[4]
local aspeedy=表track[5]

if aspeedx==nil then
    local pos=子弹位置{x,y}
    local diff={x=pos.x-x,y=pos.y-y} --diff指示器弧线圆心  x,y此时为世界坐标
    if diff.x==0 then
        aspeedx={diff.y}
    else
        aspeedx = math.atan(diff.y/diff.x)
        if diff.x<0 then
            aspeedx=aspeedx+100
        end
    end
end

setCirClepos(x,y)----------定圆心  世界坐标
trackStart(x,y,aaspeedx,aspeedy)--------位移函数
track【1】
x=skillDir:x()
y=skillDir:y()
local r=  10---------------***此时圆半径出现***

x+10*x-r*2*skillDir:x()-------任意的int值修改偏移  

y 加速度等同理 调试即可


指示器思路同理 三点定弧 上文圆心x,y作为指示器gameObject的子物体指示器的偏移按照上述伪代码给出的半径重新赋值即可

public class BulletVisual : MonoBehaviour
{
    public float r = 3;
    public float offsetX=0;
    public float offsetY=0;
    private void OnDrawGizmos()
    {
        DrawCirCle(gameObject.transform.position, r);
    }
    private void DrawCirCle(Vector2 center,float Radius,int VertexCount=50)
    {
        float deltaTheta = (2f * Mathf.PI) / VertexCount;
        float theta = 0f;
        Vector3 oldPos = center;
        Debug.Log(oldPos);
        for (int i = 0; i < VertexCount + 1; i++)
        {
            Vector3 pos = new Vector3(Radius * Mathf.Cos(theta)+offsetX=0, Radius * Mathf.Sin(theta)+offsetY, 0f);
            Gizmos.DrawLine(oldPos, (Vector3)center + pos);//绘制方法任意
            Gizmos.color = Color.red;绘制方法任意
            oldPos = transform.position + pos;

            theta += deltaTheta;
        }

    }
}

通过dir方向截取弧长绘制即可

没法粘贴出公司的绘制办法 ,下篇博客我会给出自己的代码
欢迎大家批评指正

  • 13
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值