Actionscript hitTestObject方法fal通过newar角点
两个矩形和给定的实例名Actionscript hitTestObject方法fal通过newar角点,actionscript,Actionscript,两个矩形和给定的实例名w1和w2那么,当我试图通过两个矩形时,它们卡在拐角处,但我看到它们彼此相距很远,如何才能非常接近地通过呢 请以问题的形式重新措辞。告诉我们出了什么问题,不要说去测试。事实上,我有两个矩形转换为符号,命名为w1和w2。我想让w1矩形通过w2矩形的角附近,但如果你让它们通过角附近,它们会相撞很远 addEventListener(Event.ENTER_FRAME, moveplayer); var left,right,up,back:Boolean; // both
w1
和w2
那么,当我试图通过两个矩形时,它们卡在拐角处,但我看到它们彼此相距很远,如何才能非常接近地通过呢
请以问题的形式重新措辞。告诉我们出了什么问题,不要说去测试。事实上,我有两个矩形转换为符号,命名为w1和w2。我想让w1矩形通过w2矩形的角附近,但如果你让它们通过角附近,它们会相撞很远
addEventListener(Event.ENTER_FRAME, moveplayer);
var left,right,up,back:Boolean;
// both rectangles were given instancename as w1 and w2 and drawn on stage manually
stage.addEventListener(KeyboardEvent.KEY_DOWN ,keypress);
stage.addEventListener(KeyboardEvent.KEY_UP ,keyup);
//gray box movement key
function keypress(event:KeyboardEvent ):void
{
if (event.keyCode == 37)
{
left = true;
}
else if (event.keyCode==38)
{
up = true;
}
else if (event.keyCode==39)
{
right = true;
}
else if (event.keyCode==40)
{
back = true;
}
}
function keyup(event:KeyboardEvent ):void
{
if (event.keyCode == 37)
{
left = false;
}
else if (event.keyCode==38)
{
up = false;
}
else if (event.keyCode==39)
{
right = false;
}
else if (event.keyCode==40)
{
back = false;
}
}
//grey box movement
function moveplayer(event:Event ):void
{
//hit test
if (w1.hitTestObject(w2))
{
trace("hit");
//function call to repulse back
repulse();
}
else
{
// function call to move
go();
}
//rotation
if (left)
{
rotateit("left");
}
else if (right)
{
rotateit("right");
}
function rotateit( direc:String)
{
if (direc == "left")
{
w1.rotation -= 1;
}
else if (direc == "right")
{
w1.rotation += 1;
}
}
}
//move function
function go()
{
if (up)
{
var x2:Number = w1.x;
var y2:Number = w1.y;
//trace(x2,y2)
var speed:Number = 5;
w1.x += speed * Math.sin(w1.rotation * 2 * Math.PI / 360);
w1.y -= speed * Math.cos(w1.rotation * 2 * Math.PI / 360);
}
}
//repulsion function
function repulse()
{
var x1:Number = w1.x;
var y1:Number = w1.y;
trace(x1,y1);
var speed:Number = 5;
w1.x += - (speed * Math.sin(w1.rotation * 2 * Math.PI / 360));
w1.y -= - (speed * Math.cos(w1.rotation * 2 * Math.PI / 360));
}