コード例 #1
0
        void HandleTouchBegin3(TouchBeginEvent args)
        {
            var            graphics     = GetSubsystem <Graphics>();
            PhysicsWorld2D physicsWorld = scene.GetComponent <PhysicsWorld2D>();
            RigidBody2D    rigidBody    = physicsWorld.GetRigidBody(new Vector2(args.X, args.Y), uint.MaxValue); // Raycast for RigidBody2Ds to pick

            if (rigidBody != null)
            {
                pickedNode = rigidBody.Node;
                StaticSprite2D staticSprite = pickedNode.GetComponent <StaticSprite2D>();
                staticSprite.Color = (new Color(1.0f, 0.0f, 0.0f, 1.0f)); // Temporary modify color of the picked sprite
                rigidBody          = pickedNode.GetComponent <RigidBody2D>();

                // Create a ConstraintMouse2D - Temporary apply this constraint to the pickedNode to allow grasping and moving with touch
                ConstraintMouse2D constraintMouse = pickedNode.CreateComponent <ConstraintMouse2D>();
                Vector3           pos             = camera.ScreenToWorldPoint(new Vector3((float)args.X / graphics.Width, (float)args.Y / graphics.Height, 0.0f));
                constraintMouse.Target           = new Vector2(pos.X, pos.Y);
                constraintMouse.MaxForce         = 1000 * rigidBody.Mass;
                constraintMouse.CollideConnected = true;
                constraintMouse.OtherBody        = dummyBody; // Use dummy body instead of rigidBody. It's better to create a dummy body automatically in ConstraintMouse2D
                constraintMouse.DampingRatio     = 0;
            }

            SubscribeToEvent <TouchMoveEvent>(HandleTouchMove3);
            SubscribeToEvent <TouchEndEvent>(HandleTouchEnd3);
        }
コード例 #2
0
        void HandleTouchBegin3(TouchBeginEvent args)
        {
            var graphics = GetSubsystem<Graphics>();
            PhysicsWorld2D physicsWorld = scene.GetComponent<PhysicsWorld2D>();
            RigidBody2D rigidBody = physicsWorld.GetRigidBody(new Vector2(args.X, args.Y), uint.MaxValue); // Raycast for RigidBody2Ds to pick
            if (rigidBody != null)
            {
                pickedNode = rigidBody.Node;
                StaticSprite2D staticSprite = pickedNode.GetComponent<StaticSprite2D>();
                staticSprite.Color = (new Color(1.0f, 0.0f, 0.0f, 1.0f)); // Temporary modify color of the picked sprite
                rigidBody = pickedNode.GetComponent<RigidBody2D>();

                // Create a ConstraintMouse2D - Temporary apply this constraint to the pickedNode to allow grasping and moving with touch
                ConstraintMouse2D constraintMouse = pickedNode.CreateComponent<ConstraintMouse2D>();
                Vector3 pos = camera.ScreenToWorldPoint(new Vector3((float)args.X / graphics.Width, (float)args.Y / graphics.Height, 0.0f));
                constraintMouse.Target = new Vector2(pos.X, pos.Y);
                constraintMouse.MaxForce = 1000 * rigidBody.Mass;
                constraintMouse.CollideConnected = true;
                constraintMouse.OtherBody = dummyBody;  // Use dummy body instead of rigidBody. It's better to create a dummy body automatically in ConstraintMouse2D
                constraintMouse.DampingRatio = 0;
            }

            SubscribeToEvent<TouchMoveEvent>(HandleTouchMove3);
            SubscribeToEvent<TouchEndEvent>(HandleTouchEnd3);
        }