Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/sockets/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Actionscript 3 用三角法给球指路有困难吗_Actionscript 3_Flash - Fatal编程技术网

Actionscript 3 用三角法给球指路有困难吗

Actionscript 3 用三角法给球指路有困难吗,actionscript-3,flash,Actionscript 3,Flash,哦,天哪,伙计们,我很抱歉再次打扰你们,我从没想过开始用AS3编码会这么难(一开始很容易,但现在我的思维被阻塞了),我仍然无法让球以所需的速度和角度跟随鼠标,我举了jett的例子,但可能我没有正确实现它,下面是代码;我会解释我想要完成的事情 import flash.geom.Point; import flash.events.MouseEvent; import flash.events.Event; import flash.display.MovieClip; // here I add

哦,天哪,伙计们,我很抱歉再次打扰你们,我从没想过开始用AS3编码会这么难(一开始很容易,但现在我的思维被阻塞了),我仍然无法让球以所需的速度和角度跟随鼠标,我举了jett的例子,但可能我没有正确实现它,下面是代码;我会解释我想要完成的事情

import flash.geom.Point;
import flash.events.MouseEvent;
import flash.events.Event;
import flash.display.MovieClip;
// here I added a custom cursor to my mouse (it’s an aim in png format)
var cursor:MovieClip;
function initializeGame():void
{
cursor = new Cursor();
addChild(cursor);
cursor.enabled = false;
Mouse.hide();
stage.addEventListener(MouseEvent.MOUSE_MOVE, dragCursor);
}

再次感谢你们的指导

老问题 我开始用AS3创建一个足球点球决战游戏,但我在给球提供速度和方向时遇到困难,一旦球被踢出,我就无法让球员踢球(是的,我不是开发人员,但我一直在努力完成游戏)因此,我设法在一个函数上设置了一个延迟,该函数允许我在3.5秒后将球移动到球门,同时球员的动画模拟踢球,代码如下:

kick_btn.addEventListener(MouseEvent.CLICK, kick);

function kick(evt:Event)
{
    kicker_mc.play();

    new delayedFunctionCall (myFunctionToStartLater, 350);

    function myFunctionToStartLater():void
    {    
        ballkicked();
    }
}

function ballKicked(event:Event)
{
    ball_mc.y=180;
}
现在检查我是否只是将球移动到不同的位置,但我想在功能BallKitched()中将球扔给守门员;这里是我想给球真正的运动,这样投篮就可以成为一个目标,我知道我需要使用一些三角函数来给出方向和速度,但三角函数似乎非常复杂,我在遵循一个教程,但我只能准备一些变量和参数,但后来我迷路了:

var xSpeed:Number;
var ySpeed:Number;
var angle:Number;
var speed:Number;
该功能应继续执行:

angle = this.rotation / 180 * Math.PI;
xSpeed = Math.cos(angle) * speed;
ySpeed = Math.sin(angle) * speed;

我真的很感激你的耐心和帮助,我真的很想学习如何做事,我不想放弃。非常感谢

atan2功能将为您提供“投掷”球的角度。为此,您将需要两个位置向量,例如,我们将使用鼠标位置到球位置

angle = atan2(mouse.y-ball.y, mouse.x-ball.x)
请注意,首先使用y坐标。这将为您提供一个数字,您可以根据该数字向前推进球:

ball.x += cos(angle)*speed
ball.y += sin(angle)*speed
这将使球向鼠标所在的位置移动。然而,你将需要考虑重力通过弯曲角度接近地面。当地面被击中时,你可以简单地降低速度并翻转矢量的y轴

*您可能会发现使用附加加速度向量很有用* 有了这个,你可以设置加速度向量,类似于我上面展示的:

//same as above
ball.accx += cos(angle)*speed
ball.accy += sin(angle)*speed
起初。然后在每一帧上把这个向量加到你的pos向量上。在初始帧之后,您将希望提供某种阻尼和重力-这取决于您希望如何实现


另一种计算方法是使用正弦波来说明路径。你可以在这里看到一个例子:,这一点一开始比较容易,但你需要学习向量的概念来处理碰撞,如我上面所示。

atan2函数将为你提供“扔”球的角度。为此,您将需要两个位置向量,例如,我们将使用鼠标位置到球位置

angle = atan2(mouse.y-ball.y, mouse.x-ball.x)
请注意,首先使用y坐标。这将为您提供一个数字,您可以根据该数字向前推进球:

ball.x += cos(angle)*speed
ball.y += sin(angle)*speed
这将使球向鼠标所在的位置移动。然而,你将需要考虑重力通过弯曲角度接近地面。当地面被击中时,你可以简单地降低速度并翻转矢量的y轴

*您可能会发现使用附加加速度向量很有用* 有了这个,你可以设置加速度向量,类似于我上面展示的:

//same as above
ball.accx += cos(angle)*speed
ball.accy += sin(angle)*speed
起初。然后在每一帧上把这个向量加到你的pos向量上。在初始帧之后,您将希望提供某种阻尼和重力-这取决于您希望如何实现


另一种计算方法是使用正弦波来说明路径。你可以在这里看到一个例子:,这在开始时比较容易,但你需要学习向量的概念来处理碰撞,如我上面所示。

哇,太快了!非常感谢,伙计,我一整天都在处理这件事,我就要辞职了相信我,感谢上帝。我真的很感激,朋友,现在我又有了希望。我想我的延迟功能给这个选项带来了一些麻烦,我想我需要去掉它,但无法想象在踢球动画完成后,如何让球员踢球,在踢球者的电影剪辑中的最后一帧上进行击球测试?任何想法都将不胜感激!我个人会使用圆距离作为一个简单的测量。你也可以非常容易地用这个导出角度。检查球和脚之间的距离是否小于某个数字,如果是这样,你会发生碰撞。非常感谢jett,这很有意义,他会立即尝试。真的很感激你,朋友!哇,太快了!非常感谢,伙计,我一整天都在处理这件事,我就要辞职了相信我,感谢上帝。我真的很感激,朋友,现在我又有了希望。我想我的延迟功能给这个选项带来了一些麻烦,我想我需要去掉它,但无法想象在踢球动画完成后,如何让球员踢球,在踢球者的电影剪辑中的最后一帧上进行击球测试?任何想法都将不胜感激!我个人会使用圆距离作为一个简单的测量。你也可以非常容易地用这个导出角度。检查球和脚之间的距离是否小于某个数字,如果是这样,你会发生碰撞。非常感谢jett,这很有意义,他会立即尝试。真的很感激你,朋友!