我想知道从中心拉伸图像时的坐标值。
我知道纹理图像中的一个像素坐标,并且通过将射线匹配到移动屏幕来使用射线投射。
但是我不知道图像增长时坐标值如何变化。
图像增长时,如何计算以抵消实际尺寸的坐标值?
图像将增加到1.33f大小。
答案 0 :(得分:2)
Unity3D中可能有更简单的方法-我在那里没有任何经验-但这听起来像是一个相当简单的缩放问题。
您需要了解以下内容:
(width/2, height/2)
1.33f
)鉴于上述情况,您可以使用简单的数学公式计算要触摸的像素:
public Vector2Int ScaleTouch(Vector2Int imgCentre, Vector2Int dispCentre, float scale, Vector2Int touch)
{
var x = imgCentre.x + (touch.x - dispCentre.x) * scale;
var y = imgCentre.y + (touch.y - dispCentre.y) * scale;
return Vector2Int.RoundToInt(new Vector2(x, y));
}
或者使用Vector2
和Vector2Int
中的方法,您可以做到这一点:
public Vector2Int ScaleTouch(Vector2Int imgCentre, Vector2Int dispCentre, float scale, Vector2Int touch)
{
var offset = Vector2.Scale(touch - dispCentre, new Vector2(scale, scale));
return offset + imgCentre;
}
两者都假设您在x
和y
中的比例是均匀的。如果希望灵活地在不同轴上缩放,可以提供一个缩放向量。