You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

通过Raycast创建的Cylinder方向不符问题求助

Roblox圆柱轨迹绘制问题解决方案

问题根源:Roblox中Cylinder类型Part的长度方向默认是Y轴,而你原代码是基于立方体(长度沿Z轴)编写的,直接修改Shape会导致轴向不匹配,出现朝向偏移和位置错误。

以下是修复后的完整代码:

trazo.OnServerEvent:Connect(function(usuario, iniciovisible, impacto)
    local largo = (iniciovisible - impacto).Magnitude
    local direction = (impacto - iniciovisible).Unit

    local linea = Instance.new("Part")
    linea.Parent = workspace.Residuos
    linea.Anchored = true
    linea.CanCollide = false
    linea.Shape = Enum.PartType.Cylinder -- 显式设置为圆柱形状
    linea.Size = Vector3.new(.1, largo, .1) -- X/Z为圆柱直径,Y为轨迹长度
    linea.Transparency = .2

    -- 调整CFrame:让圆柱Y轴对齐射线方向,中心位于起点与终点中点
    linea.CFrame = CFrame.new((iniciovisible + impacto)/2) 
        * CFrame.fromAxisAngle(Vector3.new(0,0,1), math.rad(90)):Inverse() 
        * CFrame.lookAt(Vector3.zero, direction)

    -- 优化动画:仅增加圆柱长度(Y轴),保持粗细不变
    for count = 0, 3 do
        linea.Size += Vector3.new(0, .1, 0)
        linea.Transparency += .2
        task.wait(.1)
    end

    linea:Destroy()
end)

关键修改说明:

  • Shape设置:必须显式指定Enum.PartType.Cylinder,否则默认是立方体
  • Size参数:圆柱的Y轴对应长度,X/Z轴对应圆柱的粗细(直径),所以将轨迹长度largo赋值给Size.Y
  • CFrame轴向修正:CFrame.lookAt默认让Z轴指向目标方向,通过绕Z轴旋转90度的逆变换,将Y轴对齐射线方向,确保圆柱沿轨迹延伸
  • 动画优化:原代码同时增加三个轴的尺寸,会导致圆柱越来越粗,改为仅增加Y轴长度,符合轨迹动画的预期效果

内容的提问来源于stack exchange,提问作者Martin

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.01 13:32:31