当前位置: 首页 > news >正文

Unity实现连连看连线效果

1.一个比较简单的向量计算,用的LineRenderer实现;

已知起始A点和终点C点,求B点;

先计算A点到C点的向量取归一化当做方向,再给定一个“模长”(B点到A点的模长)乘以该方向,最后加上LineRenderer的自身坐标位置(即A点位置)转换到世界空间;

代码如下:

using System.Collections;
using System.Collections.Generic;
using Unity.Mathematics;
using Unity.VisualScripting;
using UnityEngine;

[ExecuteInEditMode]
public class LineEffects : MonoBehaviour
{
    public  Color LineCol = Color.white;
    public GameObject A;
    public GameObject c;
    public GameObject Line;
    private LineRenderer myLineRenderer;
    [Range(0,0.1f)]public float LineWidth = 0.05f;
    [Range(0,1)]public float MidDistance = 0.25f;

    void Start()
    {
        myLineRenderer = Line.GetComponent<LineRenderer>();
    }

    // Update is called once per frame
    void Update()
    {
        MidLenthMath();


    }

    public void MidLenthMath(){
        myLineRenderer.startWidth = LineWidth;
        myLineRenderer.endWidth = LineWidth;
        //位置
        Vector3 StartPos = A.transform.position - Line.transform.position;
        Vector3 EndPos = c.transform.position - Line.transform.position;

        //向量
        Vector3 X = (c.transform.position - A.transform.position);
        //求中间位置//这个是按照模长求的位置
        X = X.normalized*MidDistance;
        //求解中间B点位置
        Vector3 B = new Vector3(0,0,0);
        B = X + A.transform.position;
        B = new Vector3(B.x,0,B.z);

        myLineRenderer.SetPosition(0,StartPos);
        myLineRenderer.SetPosition(1,B);
        myLineRenderer.SetPosition(2,EndPos);

        Material myLineMat =  myLineRenderer.sharedMaterial;
        myLineMat.SetColor("_UnlitColor",LineCol);

    }
}

相关文章:

  • 【大模型系列篇】硅基智能开源数字人模型HeyGem.ai,开启数字人时刻
  • el-table的行向上移动向下移动,删除选定行
  • 网络编程(客户端间通信)
  • numpy学习笔记5:arr.T 是数组的转置属性详细解释
  • AI学习——卷积神经网络(CNN)入门
  • 计算机网络-网络接入技术
  • 【图像处理基石】什么是HDR图片?
  • Git 分支使用规范全解(多人协作开发适用)
  • 火星探测发展概述2025.3.20
  • JAVA序列化与反序列化URLDNS链CC1链
  • 【初学者】谈谈ChatGPT使用的算法?
  • IMX8MP Android 10系统编译SDK
  • LeetCode 30 —— 30.串联所有单词的子串
  • MobaXterm(远程终极工具箱) v25.1 Build 5288 汉化绿色版
  • Rust语言介绍和猜数字游戏的实现
  • Flink集群部署
  • 集装箱箱号OCR识别技术,在铁路物流场站集装箱装卸机械数字化系统中的应用
  • 高级java每日一道面试题-2025年3月05日-微服务篇[Eureka篇]-Eureka在微服务架构中的角色?
  • nginx keepalive设置失效k6显示i/o timeout解决方案
  • Redis项目:秒杀业务(优化)
  • 市场监管总局:2024年查办商标、专利等领域违法案件4.4万件
  • 长三角议事厅·周报|长三角游戏出海,关键在“生态输出”
  • 在循环往复的拍摄中,重新发现世界
  • 中消协发布“五一”消费提示:践行“光盘行动”,抵制餐饮浪费
  • 美媒:受关税政策影响,美国电商平台近千种商品平均涨价29%
  • 四川邻水县县长石国平拟任县(市、区)党委书记