Этот вопрос закрыт для ответов, так как повторяет вопрос Unity как добавить сюда offset?
@Wadim_wadim2000

Unity как добавить сюда offset?

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.
  • Вопрос задан
  • 53 просмотра
Пригласить эксперта
Ваш ответ на вопрос

Вопрос закрыт для ответов и комментариев

Потому что уже есть похожий вопрос.
Похожие вопросы