C# 通过鼠标拖动,在其自身的X轴上来回移动对象
我想:C# 通过鼠标拖动,在其自身的X轴上来回移动对象,c#,unity3d,C#,Unity3d,我想: 使用鼠标在其自身的X轴上来回移动特定对象 夹住盒子之间的空隙 我尝试过但不适用于我的代码: void Update() { point = Camera.main.ScreenToWorldPoint( new Vector3(Input.mousePosition.x, (transform.position.y-Camera.main.transform.position.y), (transform.p
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;
}
要钳制值,可以使用
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);
}
}
使用UnityEngine;
使用UnityEngine.EventSystems;
公共类MoveOnMouseDrag:MonoBehavior{
公众浮标半程;
void Start()
{
EventTrigger=GetComponent();
EventTrigger.Entry=新的EventTrigger.Entry();
entry.eventID=EventTriggerType.Drag;
entry.callback.AddListener((数据)=>{OnDragDelegate((PointerEventData)数据);});
trigger.triggers.Add(条目);
}
公共void OnDragDelegate(PointerEventData数据)
{
float Distance fromCamera=Vector3.距离(Camera.main.transform.position,transform.position);
var newPos=Camera.main.ScreenToWorldPoint(新矢量3(data.position.x,data.position.y,distanceFromCamera));
transform.position=新矢量3(数学夹具(新位置x,-半距离,半距离),
变换.position.y,
变换位置(z);
}
}
为了使脚本正常工作,您必须将
EventTrigger
组件添加到同一对象,将EventSystem
添加到场景,将PhysicsRaycaster
组件添加到相机 用什么语言和平台?请贴上合适的标签到目前为止你试过什么吗?请出示您的密码!StackOverflow不是一个请为我编码的平台,而是一个为特定编程问题提供帮助的社区。请查看,当您遇到与编码相关的特定问题时,我们很乐意提供帮助。