コード例 #1
0
        private void UpdateCollider2(Check2DCollider collider, TSVector curPosition, TSVector curForward, BaseGameColliderData colliderData)
        {
            FP nAngle = TSVector.Angle(TSVector.forward, curForward);

            if (curForward.x < 0)
            {
                nAngle = 360 - nAngle;
            }
            TSQuaternion sQuat   = TSQuaternion.AngleAxis(nAngle, TSVector.up);
            TSVector     center  = curPosition + sQuat * colliderData.center;
            TSVector     forward = sQuat * colliderData.forward;

            collider.center  = new TSVector2(center.x, center.z);
            collider.forward = new TSVector2(forward.x, forward.z);
        }
コード例 #2
0
        private Check2DCollider Create2DCollider(BaseGameColliderData data)
        {
            Check2DCollider collider = null;

            if (data.gameColliderType == GameColliderType.RectCollider)
            {
                C2D_Rect rect = ObjectPool <C2D_Rect> .Instance.GetObject();

                RectColliderData rectData = (RectColliderData)data;
                rect.halfWidth  = rectData.halfWidth;
                rect.halfHeight = rectData.halfHeight;
                collider        = rect;
            }
            else if (data.gameColliderType == GameColliderType.CircleCollider)
            {
                C2D_Circle circle = ObjectPool <C2D_Circle> .Instance.GetObject();

                CircleColliderData circleData = (CircleColliderData)data;
                circle.radius = circleData.radius;
                collider      = circle;
            }
            return(collider);
        }
コード例 #3
0
    void Start()
    {
        Collider2D collider = GetComponent <Collider2D>();
        var        pos      = transform.position;
        var        up       = transform.up;
        var        scale    = transform.lossyScale;

        if (collider != null)
        {
            if (collider is BoxCollider2D)
            {
                var   c          = (BoxCollider2D)collider;
                float halfWidth  = scale.x * c.size.x / 2;
                float halfHeight = scale.y * c.size.y / 2;
                c2d_collider = new C2D_Rect(new TSVector2(FP.FromFloat(pos.x), FP.FromFloat(pos.y)), new TSVector2(FP.FromFloat(up.x), FP.FromFloat(up.y)), FP.FromFloat(halfWidth), FP.FromFloat(halfHeight));
            }
            else if (collider is CircleCollider2D)
            {
                var   c      = (CircleCollider2D)collider;
                float radius = Mathf.Max(scale.x, scale.y) * c.radius;
                c2d_collider = new C2D_Circle(new TSVector2(FP.FromFloat(pos.x), FP.FromFloat(pos.y)), new TSVector2(FP.FromFloat(up.x), FP.FromFloat(up.y)), FP.FromFloat(radius));
            }
        }
    }