ActionScript 2.0 :: Advance HitTesting - Test The Collision If They Are Rotated?
Oct 27, 2006it's easy to test collision between two squares. how do I test the collision if they are rotated?
View 1 Repliesit's easy to test collision between two squares. how do I test the collision if they are rotated?
View 1 RepliesI am currently making a game based on slicing other objects, basiclly when you hold down and drag your mouse and then release it an object that shows the cut will be created.
//Sliceline.as
package
{
import flash.display.Bitmap;
[code]....
I need to know what side of a rotated box my sphere/point is colliding with and at what angle.
I could perform the 4 lines check but I think it will be too cpu consuming. I need it for fast simple physics simulations(bounces)..
Im currently working on a demo flash game built on AS 2.0. im a very beginner to this flash and AS and im stuck up with a very silly concept though im not able to overcome it. the problem i have is with collision detection ie hit test and im really struggling with it.
[Code]....
I have a ball in a page and a stopwatch.
The stopwatch works fine starts on page ready.The ball moves using the arrow keys.
But i am just wondering how can I create some kind of boundary, (which will be the size of the page) which when the ball collides with it or goes out of the page the stopwatch will stop?[code]...
Is there a way to test collision with a child of an object?eg.
ActionScript Code:
obj1.hitTestObject(obj2.childObj1)
obj1 and obj2 are on the same level of hierarchy.
I am trying to test when an object collides with a particular location of another object so i made a 1x1 movieclip (childObj1) and placed it inside obj2 at that particular position.
I'm having a problem with a hitTest that I'm not sure how to correct. Long story short, I have a box that is added to the stage and beings to tween down to the bottom. If the user presses the left arrow to catch the object before it leaves the stage, they get 1 point (hooray!).The issue that I'm having is this...multiple instances of the same MC are supposed to be added to the stage by a timer but because of how I've set it up, they all have the same instance name. That leaves me with one of 2 options. I can get the hit test to work, but only 1 instance ever actually shows up or a bunch show up, but the hitTest fails. How can i add multiple instances of the same object, but still be able to determine if one of them is overlapping the box when the user hits the arrow key?[code]
View 3 RepliesI'm making a map creator for a tabletop game. The idea is that the map creator would consist of a 48x48 grid and would allow people to drag items onto that grid and save the positional layout of objects like trees and buildings.So I'm working on the very first steps of this and have written the script so far to dynamicaly generate a 48x48 grid and created a test object to be dragged called "follow".
The dynamicaly generated MC draws from the "grid" MC from the library which consists of two layers; the outline of a box and an MC named "grid_bg" which contains a coloured square (set to the same size as the outline). This is all placed into the "container" MC which by default is empty.This part I get working fine.the "follow" mc is set so that it can be dragged on a mouse click.Now the idea is that if a hitTest is run to see if "follow" is in contact with any of the "grid_bg" MC's and if so, run code (i.e. hide or show the grid_bg mc).
This is where I am encountering problems. If I set the hitTest into a layer within the "grid" MC, it only runs the hit test when the movie is first loaded and ignores you dragging and dropping the "follow" mc. If the hitTest is placed into the actions of the "grid_bg" MC and used in conjuction with an IF statement, it seems to act like there is a collision on every box generated.Code to generate the grid:
Code:
//make textboxes
count=2304;
[code].....
how i can get these lasers to work in the correct manner. For some reason, 2-3 seconds in the game, the game goes to the next frame. I can't get the second player's fire to stick with him as he travels across the screen. Here's the fla.
View 14 RepliesIn my file (AS2), I have a small square at the middle of the page. Diagonally to the right, I have a vertical wall which is a rectangle. Pasted inside my small square, I have the code:
onClipEvent(enterFrame) {
if (Key.isDown(Key.RIGHT)) {
if (this.hitTest(Wall._x, Wall._y, false)) _x =
[code]......
I have a question regarding hittest object in actionscript 3. When using events, you can check what the current target is by using e.target or e.currenttarget. I was wondering how this achievable by hittesting?since hittests are not a function.
I need to retrieve info about the hittested object.Here is an example to make it more clear:
ActionScript Code:
if(movieclip1.hitTestObject(movieclip2)){
textfield.text = "this is information selected by the hittest: " + channel[e.target.name].item;
}
I'm working on a project and using hittest to navigate. So it's pretty important haha.
I have a movieclip named Map linked to a class named Map. Inside of the movieclip I have 3 instances of a movieClip hitbox. they are named block0, block1, block2. What I'm trying to do is add them to an array using a for loop. Then in my player class I use another for loop to hitTest against the array. What I'm getting tho is this error:
Code:
TypeError: Error #1034: Type Coercion failed: cannot convert []@2393159 to flash.display.DisplayObject.
at xxx::Player/loop()[Player.as:54] The code from Player.as that the error refers to is here:
[Code]...
I created a .PNG in Photoshop (see attachment) -- now when I make this into a movieclip the bounding box covers the entire area so the hittest activates as soon as my helicopter flies into the bounding box.I looked at adobe's "help" they recommended this code (by the way, I'm using Flash 8):
my_mc.hitTest(x, y, shapeFlag )
my_mc.hitTest(target)
The way I interpreted the code was like this:
onClipEvent(enterFrame){
heli.hitTest(248.1, -38, shapeFlag)
}
I read somewhere that you only use one of the two, and the shapeFlag one is the one to use.The above code I placed into the helicopter MC (named heli) - I set the x & y to where the PNG is.The PNG moves towards the helicopter, so I'm not sure if that makes a difference.I just want that if the helicopter runs into the ceiling or floor, the level resets.However my current actions activate as soon as it hits the bounding box.This is my code in the PNG:
onClipEvent(enterFrame){
this._x -= _root.levelSpeed;
}[code]....
I've tried a lot of things, and nothing seems to be working.
iv gotten hittest to work on me and my friends sites, but with olny one button for the MC to check for. Very simply, how do i get it to check for 2 or more?
View 6 RepliesI've got a game where I need the enemys to hitTest with each other, I'm going to have copys of 3 types of enemys on the stage, instead of giving them all an instance name is it possible to hittest from the libary because I've given them instance names in the library of "enemya" "enemyb" "enemyc"
The code I have got didn't work which was -
Code:
onClipEvent(enterFrame){
if(this.hitTest(_root.enemyc)){
trace("true")
}
[Code].....
I'm looking to run a trace that targets all TextFields on a mouse over, something like this:
PHP Code:
TextField.prototype.hitTest = MovieClip.prototype.hitTest;
onEnterFrame = function(){
[code].....
are there any special rules regarding hittesting? im using this code here and its jus not working at all:
var speed:Number = 0;
var angle:Number = 0;
var angleFish:Number = 0;[code]....
im starting to get quite irritated
I have a tile-based platformer game under work, and I'm stuck on a problem with hitTesting:
//check all character collisions with levelHolder
for(var i:int = 0; i < levelHolder.numChildren; i++)
{
[Code].....
The problem here is that hitBlock only hitTests one block at a time, and when I test this: If you lean on a wall (press right arrow key) and go downwards you can go through the floor.
I need to make it so that I can test on multiple blocks at a time.
And I did try to replace hitBlock with levelHolder[i], but it gave an error saying:
ReferenceError: Error #1069: Property 0 not found on flash.display.Sprite and there is no default value. at Main/enterFrame()
I'm guessing that comes from the level array where 0 = blank block / empty space.
At first I had all my sprites in an array and cycled through them to detect for collisions but now I am trying to put them in 1 big sprite and testing just that. I don't know if I am doing something wrong or this is to be expected but testing for 1 big sprite creates lag within the engine. Am I correct to assume that it's because I am constantly testing the pixels of the 1 sprite? When cycling through the sprites individually i never noticed this lag.
View 0 RepliesI am trying to make a basic game, and have read all about bitmaps, but they have only confused me, so I am trying to succeed with a more flawed, but basic approach. I couldn't find any comprehensible tutorials on this, so I've tried it on my own, but it doesn't work.Basically I have my character in a movie clip connected to a class, and it is spawned when the movie starts, just like the "wall" class here. It populates the stage with a line of boxes, but my problem is that the hittesting only works on the first one.[code]
View 9 RepliesI thought maybe I had to use localToGlobal, but they are on the same layer, so it can't be that. It works on the root frame, just not in the movieclip.
View 2 RepliesI'm just learning so I'm sure I'm making many stupid errors. How do you hitTest 2 separate arrays of different lengths, all entries against one another . Code below for guidance.
Code:
package{
import flash.display.*;
import flash.events.*;
[Code]....
I'm making a game where your character must touch rings (big ovals) that are moving up and down with a motion tween (with easing). I attach these movies and push them into an array. For the hittesting, nothing is accurate. Since a movieclip inside the ring movieclip is moving up and down, the boundary box is much bigger than it should be when hittesting. If I use the x/y method, it triggers the hittest when my character is in line with the reference point. It should trigger when the middle of the character hits around the middle of the ring.
View 2 RepliesWhat I'm trying to do is hittest two irregularly shaped objects using their alphas and not the bounding box.
The code below hittests two objects named target 1 & target 2. This is not my code, but mine looks exactly alike, except target 1 & target 2 are replaced with my MC's. the thing is, I keep getting an error.At every function line, like the "public static function complexHitTestObject I get an error that says: Expecting right paren before left-bracket. I don't know what this error is caused by, because I can't really see why Flash wants another right paren.
[Code]...
im having a really frustrating problem. I have 6 movieclips on the stage, all acting as 'map areas', these are named area1_mc, area2_mc and so on.. I then have a car which i drive around the screen, this instance name is car_mc ... All i want to do is do a HitTest to determine if the car is on one of the 6 areas.. i have the following
[Code]...
The reason it is not working i think is it is expecting the car to be on ALL map areas in order for it to be "on map". For example if the car is in the middle of area1_mc, i get three traces. On map (refferign to it being on area1_mc) then two traces of 'off map', because it obviously isnt on area2_mc or area3_mc.
I'm trying to test a custom Flex 4 skinnable component, using the FlexUnit UIImpersonator class. If I run my tests from a FlashBuilder Spark only project everything works fine. If I try to test from a project with the mx component set on the classpath I get a "getElementIndex not available in non Flex 4 projects" error.Can I unit test spark components in FlexUnits visual test environment while still having the mx component set on the classpath?
UIImpersonator delegates it's method calls to a "testEnvironment".The implementation used for this "testEnvironment" is decided by the VisualTest EnvironmentBuilder class and the FlexEnvironmentBuilder class. If the FlexEnvironmentBuilder class can find the "mx.core.Container" on the classpath it returns a MX environment, else a Spark environment. Only the spark environment has valid implementations for Flex 4 relevant method calls on the UIImpersonator - like the addElement method.
My buttons only work when I click on them on the stage while having the "enable simple buttons" option on. They do not work if I try to "test movie," "test scene" and publish it to a SWF. Nothing responds whenever I am in these modes. I am using Adobe Flash Professional CS5 Actionscript 2.0.
This is the code that I put in for the buttons:
[Code].....
i have a movie that has worked fine in past during Html test but ive been doing some dubugging using the flash test latly and it runs fine here but when i go back and try to test in Html mode no errors come just the movie never fully starts (starts up about as much as if there was an error).
View 5 Repliesi'we tried for years to duplicate multiple movie clip and then hittesting them all but i can't this is my last resort
View 2 RepliesI have 4 ball movie clips, a playhead and four target movieclips called mc_1-4, the array, (my_array), has 4 elements, which are each defined as having values of 0: I have a hitTest set up that will trace my_array to the output window each time it hits mc_1, to see what is happening. However the hitTest prints the array 3 times?
Am i right in thinking that this is because the hitTest is being triggered on entry of mc_1 in the center and upon exit?I need to make this hitTest be triggered once when the hitTest passes the center of mc_1. Secondly if any of the balls have been dragged and dropped on to mc_1 i want the array value with an index of 0, to change to 100 from 0 (not in terms of its index position because my array is only 4 elements long, in terms of its actual value) which i have tried to implement but i cannot configure the right code.
1. hit tests that only trigger once when they pass through the center of the object thus tracing one array.
2.use the balls 1-4 to make the array index 0, have a value of 100 if they are in contact with mc_1.