只是自己记录一下,代码写的很"蔡"…还在学习中…
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
using System;
using UnityEngine.UI;
public class CanalLineCon : MonoBehaviour
{
public Transform imageBuffer;
public Transform imageBuffer2;
public RectTransform pa; //A点
public RectTransform pb; //B点
private RectTransform paa, pbb;
private RectTransform imgBuf, imgBuf2;
private void Start()
{
paa = pa.GetComponent<RectTransform>();
pbb = pb.GetComponent<RectTransform>();
imgBuf = imageBuffer.GetComponent<RectTransform>();
imgBuf2 = imageBuffer2.GetComponent<RectTransform>();
}
float timer = 0, timerr = 0;
private Transform traBuf;
Image imgg;
int i = 10, o = 100;
void Update()
{
if (imageBuffer.childCount < 1)
{
for (int i = 0; i < imageBuffer2.childCount; i++)
{
imageBuffer2.GetChild(0).SetParent(imageBuffer);
}
}
//每隔2秒pb pa就变换一次位置
timer += Time.deltaTime;
//
timerr += Time.deltaTime;
if (timerr >= i)
{
print("1");
i = 2;
timerr = 0;
imgBuf.anchoredPosition = new Vector2(imgBuf.anchoredPosition.x - o, 0);
imgBuf2.anchoredPosition = new Vector2(imgBuf2.anchoredPosition.x - o, 0);
}
if (timer >= 2)
{
//随机数
int r = UnityEngine.Random.Range(-50, 50);
timer = 0;
if (i == 2)
{
paa.anchoredPosition = new Vector2(pb.anchoredPosition.x-100, pb.anchoredPosition.y);
pbb.anchoredPosition = new Vector2(pb.anchoredPosition.x, pb.anchoredPosition.y+r);
}
else
{
paa.anchoredPosition = new Vector2(pb.anchoredPosition.x, pb.anchoredPosition.y);
pbb.anchoredPosition = new Vector2(pb.anchoredPosition.x+100, pb.anchoredPosition.y+r);
}
traBuf = imageBuffer.transform.GetChild(0);
traBuf.SetParent(imageBuffer2);
traBuf.position = pa.position + (pb.position - pa.position)/2;
traBuf.localRotation = Quaternion.AngleAxis(-GetAngle(), Vector3.forward);
var distance = Vector2.Distance(pb.anchoredPosition, pa.anchoredPosition);
imgg = traBuf.GetComponent<Image>();
//imgg.rectTransform.sizeDelta = new Vector2(10, Math.Max(1, distance - 30));
imgg.rectTransform.sizeDelta = new Vector2(10, distance*5);
}
}
public float GetAngle()
{
var dir = pb.position - pa.position;
var dirV2 = new Vector2(dir.x, dir.y);
var angle = Vector2.SignedAngle(dirV2, Vector2.down);
return angle;
}
}
Canvas如下:
画线工具好像不能在Canvas用, 所以用的Image画线
借鉴:https://blog.csdn.net/weixin_41995872/article/details/85685367