using System.Collections;
using System.Collections.Generic;
using UnityEngine;
public class w : MonoBehaviour
{
public GameObject arrow_end;
public GameObject arrow_line;
public GameObject player;
public float arrow_end_offset;
void Start()
{
arrow_end.SetActive(false);
}
void Update()
{
if(Input.GetMouseButtonDown(0))
{
var mousePos = Input.mousePosition; mousePos.z = 60f;
var worldPos = Camera.main.ScreenToWorldPoint(mousePos);
var sprite_pos = player.transform.position;
var rot_diff = sprite_pos - worldPos;
var rotation = (Mathf.Atan2(rot_diff.y, rot_diff.x) * Mathf.Rad2Deg) - 0f;
float dist = Vector2.Distance(sprite_pos, worldPos);
arrow_end.transform.position = worldPos;
arrow_end.transform.rotation = Quaternion.Euler(0.0f, 0.0f, rotation);
arrow_end.transform.position += arrow_end_offset * - arrow_end.transform.up;
arrow_end.transform.gameObject.SetActive(true);
arrow_line.transform.position = (sprite_pos + worldPos) / 2f;
arrow_line.transform.right = Vector3.Normalize(sprite_pos - worldPos);
Vector3 scale = new Vector3(Vector3.Distance(worldPos, sprite_pos), 1f, 1f);
arrow_line.transform.localScale = scale;
}
}
}
Конкретно за обьект "линии" отвечает:
arrow_line.transform.position = (sprite_pos + worldPos) / 2f;
arrow_line.transform.right = Vector3.Normalize(sprite_pos - worldPos);
Vector3 scale = new Vector3(Vector3.Distance(worldPos, sprite_pos), 1f, 1f);
arrow_line.transform.localScale = scale;
вот со второй точкой все нормально, смещается по offset - у :
arrow_end.transform.position = worldPos;
arrow_end.transform.rotation = Quaternion.Euler(0.0f, 0.0f, rotation);
arrow_end.transform.position += arrow_end_offset * - arrow_end.transform.up;
arrow_end.transform.gameObject.SetActive(true);
а когда я пытаюсь так сделать с линией, происходит какая то фигня, ее во все стороны разворачивает, но не туда, куда надо. Как правильно сделать?
P.s
мне надо просто чтобы линия растягивалась не до точки, а до места, немного ближе нее, а на сколько ближе - float offset.