Unity 获取矩形旋转4个顶点和旋转后的4个顶点

1.获取矩形4个顶点

        /// <summary>
        /// 绘制矩形
        /// </summary>
        public static void DrawWriteRect(Vector2 center, Vector2 size)
        {
#if UNITY_EDITOR
            var halfx = size.x / 2;
            var halfy = size.y / 2;
            var movedis = new Vector3(center.x, center.y, 0);
            //4个顶点坐标
            var leftDownPos = new Vector2(-halfx, -halfy) + movedis;
            var rightDownPos = new Vector2(halfx, -halfy) + movedis;
            var leftUpPos =  new Vector2(-halfx, halfy) + movedis;
            var rightUpPos = new Vector2(halfx, halfy) + movedis;
            //4条线段
            Gizmos.DrawLine(leftDownPos, rightDownPos);
            Gizmos.DrawLine(leftDownPos, leftUpPos);
            Gizmos.DrawLine(leftUpPos, rightUpPos);
            Gizmos.DrawLine(rightUpPos, rightDownPos);
            //绘制矩形坐标点
            Label(leftDownPos, leftDownPos.ToString());
            Label(rightDownPos, rightDownPos.ToString());
            Label(leftUpPos, leftUpPos.ToString());
            Label(rightUpPos, rightUpPos.ToString());
#endif
        }

2.获取旋转后矩形的4个顶点

        /// <summary>
        /// 绘制矩形
        /// </summary>
        public static void DrawWriteRect(Vector2 center, Vector2 size, Quaternion rotation)
        {
#if UNITY_EDITOR
            var halfx = size.x / 2;
            var halfy = size.y / 2;
            var movedis = new Vector3(center.x, center.y, 0);
            //4个顶点坐标
            var leftDownPos = rotation * new Vector2(-halfx, -halfy) + movedis;
            var rightDownPos = rotation * new Vector2(halfx, -halfy) + movedis;
            var leftUpPos = rotation * new Vector2(-halfx, halfy) + movedis;
            var rightUpPos = rotation * new Vector2(halfx, halfy) + movedis;
            //4条线段
            Gizmos.DrawLine(leftDownPos, rightDownPos);
            Gizmos.DrawLine(leftDownPos, leftUpPos);
            Gizmos.DrawLine(leftUpPos, rightUpPos);
            Gizmos.DrawLine(rightUpPos, rightDownPos);
            //绘制矩形坐标点
            Label(leftDownPos, leftDownPos.ToString());
            Label(rightDownPos, rightDownPos.ToString());
            Label(leftUpPos, leftUpPos.ToString());
            Label(rightUpPos, rightUpPos.ToString());
#endif
        }

3.绘制文本

        /// <summary>
        /// 创建文本标签
        /// </summary>
        public static void Label(Vector3 position, string text)
        {
#if UNITY_EDITOR
            Handles.color = Gizmos.color;
            Handles.Label(position, text);
#endif
        }
  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值