Перемещение объекта по его собственной оси X к и от, при перетаскивании мышью - PullRequest
0 голосов
/ 31 октября 2018

image

Я хочу:

  1. с помощью мыши перемещайте конкретный объект по его собственной оси X в и из него.
  2. Зафиксировать движение между этим зазором

Код, который я пробовал, но у меня не работает:

    void Update()
    {
    point = Camera.main.ScreenToWorldPoint(
    new Vector3(Input.mousePosition.x,
            (transform.position.y-Camera.main.transform.position.y),
            (transform.position.z-Camera.main.transform.position.z)));

    point.y = transform.position.y;                   
    point.z = transform.position.z;
    transform.position = point;
  }

1 Ответ

0 голосов
/ 31 октября 2018

Чтобы зафиксировать значение, вы можете использовать метод Mathf.Clamp().

Полное решение может выглядеть примерно так:

Добавьте скрипт к вашему объекту рычага:

using UnityEngine;
using UnityEngine.EventSystems;

public class MoveOnMouseDrag : MonoBehaviour {

    public float halfDistance;

    void Start()
    {
        EventTrigger trigger = GetComponent<EventTrigger>();
        EventTrigger.Entry entry = new EventTrigger.Entry();
        entry.eventID = EventTriggerType.Drag;
        entry.callback.AddListener((data) => { OnDragDelegate((PointerEventData)data); });
        trigger.triggers.Add(entry);
    }

    public void OnDragDelegate(PointerEventData data)
    {
        float distanceFromCamera = Vector3.Distance(Camera.main.transform.position, transform.position);
        var newPos = Camera.main.ScreenToWorldPoint(new Vector3(data.position.x, data.position.y, distanceFromCamera));

        transform.position = new Vector3(Mathf.Clamp(newPos.x, -halfDistance, halfDistance),
                                         transform.position.y,
                                         transform.position.z);
    }
}

Чтобы скрипт работал, вы должны добавить EventTrigger компонент к тому же объекту, EventSystem к сцене и PhysicsRaycaster компонент к камере.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...