C++ 使对象跟随鼠标

C++ 使对象跟随鼠标,c++,visual-studio-2010,direct2d,C++,Visual Studio 2010,Direct2d,其他与这个话题相近的问题似乎并不能帮助我理解它。我刚刚开始使用VisualStudio和Direct2D编程,我很难理解如何使两个“眼睛”(椭圆中的椭圆)跟随我的鼠标 我正在使用的函数的内部 const float radius3=radius/4; const float radius3_2=radius/5; const float x3=x-100; const float y3=y-150; ellipse3 = D2D1::Ellipse(D2D

其他与这个话题相近的问题似乎并不能帮助我理解它。我刚刚开始使用VisualStudio和Direct2D编程,我很难理解如何使两个“眼睛”(椭圆中的椭圆)跟随我的鼠标

我正在使用的函数的内部

    const float radius3=radius/4;
    const float radius3_2=radius/5;
    const float x3=x-100;
    const float y3=y-150;
    ellipse3 = D2D1::Ellipse(D2D1::Point2F(x3, y3), radius3, radius3_2);
        //left eye

    const float radius4=radius/4;
    const float radius4_2=radius/5;
    const float x4=x+100;
    const float y4=y-150;
    ellipse4 = D2D1::Ellipse(D2D1::Point2F(x4, y4), radius4, radius4_2);
        //right eye

    const float radius5=radius/8;
    const float radius5_2=radius5/2;
    const float x5=x-100;
    const float y5=y-150;
    ellipse5 = D2D1::Ellipse(D2D1::Point2F(x5, y5), radius5, radius5_2);    
    // left eyeball

    const float radius6=radius/8;
    const float radius6_2=radius6/2;
    const float x6=x+100;
    const float y6=y-150;
    ellipse6 = D2D1::Ellipse(D2D1::Point2F(x6, y6), radius6, radius6_2);    
    // right eyeball

设置眼睛和眼球所在的位置。我认为应该用一些类似的东西来控制鼠标的位置。我试图从一个空白的项目,而不是从一个表格来做这件事。用
MouseMove
x
值替换
const float x5=x-100
是一种简单的解决方案吗?

您需要替换
x5
的定义,但您需要使用一个将其约束在眼球内的公式

您的公式如下所示:

// compute the angle from the eyes to the mouse
angle = arctan( (mouseY - y) / (mouseX - x) );
// x-100 and y-150 are assumed to be the origins (center) of the eyeball
// eyeballRadius should be the radius of the eyeball, or slightly smaller (so the eyes do not extend outside of it)
x5 = (x-100) + cos(angle) * eyeballRadius;
y5 = (y-150) + sin(angle) * eyeballRadius;
希望这有帮助


当光标非常接近时,要得到十字眼效应,你应该让每个眼球计算它自己的角度,例如左边的是“代码”>左边角=弧线((Mousi-Y-150)/(MUSEX -(X-100))< /COD> >/P>你知道,C++允许你使用不具有数字后缀的变量名。例如,ellipse3可以是leftEyeEllipse等。那么您就不需要

//lefteye
注释了。稍后尝试阅读您的代码的其他人将感谢您。:)我怎样才能让
mouseY
mouseX
包含鼠标指针?我不知道。我以为你知道,因为你提到了关于
MouseMove