我试图通过鼠标拖动来制作可调整大小的GameObject(在我的情况下为Quad)。我要使其工作如下:
虽然我对第一步和第三步都没问题,但对第二步却感到困惑。
我的代码当前正在执行的操作是:
这意味着我没有第二步。我以为我可以等待第二个条件完成就可以解决问题,但这没有用。
那么...我怎样才能使其按需工作?
using System;
using System.Collections;
using System.Collections.Generic;
using System.Threading;
using UnityEngine;
public class ResizeObject : MonoBehaviour
{
public GameObject ground;
void Update()
{
Vector3 mousePosition = Camera.main.ScreenToWorldPoint(new Vector3(Input.mousePosition.x, Input.mousePosition.y, Input.mousePosition.z));
// If I click on the quad in a "border" area
if (Input.GetMouseButton(0) && mousePosition.x >= ground.transform.localScale.x / 2 - 0.1 && mousePosition.x <= ground.transform.localScale.x / 2)
{
// Wait until this condition (cursor is outside a border area) will be true???
if (mousePosition.x > ground.transform.localScale.x / 2)
{
// Reisze a quad
ground.transform.localScale = new Vector3(ground.transform.localScale.x / 2 + mousePosition.x, 1, 1);
}
}
}
}
答案 0 :(得分:0)
假设这是您的四边形,以 c 为中心, h 是其高度的一半,而 w 是其宽度的一半。
------- -
| | | h
| c | -
| |
'-------'
|---|
w
我不记得一个四边形是否具有SpriteRenderer属性,但是如果有,您可以使用.bounds获取 w 和 h 。否则,您可以仅附加BoxCollider2D(如果不需要它,则作为触发器),然后使用.bounds获取这些值。
有了这些值,您可以定义一个值 d 。让我们将鼠标位置称为 m 时,如果满足以下条件之一,您将触摸边框:
您可以根据需要测试 d ,它越大,触摸边界越容易。
要进行触摸,可以使用内置方法(仅在连接了对撞机时才可用)OnMouseDown
,OnMouseDrag
和OnMouseUp
。
取决于您的缩放过程,但是可以使用.bounds值通过简单的数学操作来完成,该值从OnMouseDown
开始,以OnMouseDrag
进行缩放,以OnMouseUp
结束。 / p>