ActionScript 2.0 :: Using HitTest Function With Several Objects?
Apr 16, 2007
I want to make a hitTest functions that detects if a object is hitting any of several objects. Is there a way to do this? I thought I could do this with a array and for loop. But I think that will use to much CPU when this is loaded every frame. Is there any other way?
I'm having troubles activating the HitTest, passing the objects name as a parameter through a global function. Let's say there is the following function on the main timeline:
I'm making a game where a character moves around a level and stays in the centre of the screen as the background scrolls past. I have created a movie clip of an enemy that moves up and down, and used hitTest to stop my character flying through the enemy and also to deduct a point from the score. However, if my character hits the enemy and stays underneath him, the enemy's movement pushes my character out of the screen, and you can no longer see him.
Im trying to make a small game. Could someone take a look at the CS4 and CS3 fla files attached and tell me how to make the game reset when the red circle touches the block boxes.
Basically what I'm looking to do is hitTest bullets inside an array (spawn via addChild -> pushed into an array) with another array containing ships (spawn via addChild -> pushed into an array as well).At the moment I have:
function moveEnemyLarge():void{ var target2:EnemyLarge; for(var i2:int=0;i2<enemyShipArray.length;i2++){
[code]....
.. and a near identical function for the bullets (using variables: i, target).What is the easiest way for me to hitTest the objects within my bullet array with the objects in my ship array. Putting "target" in the PLACEHOLDER slot doesn't work, and from what I've seen some people will shove the one for() inside of the other.
I'm trying to get something quite simple to work, but can't figure out what's happening here. I have five identical MCs (Bat characters), and the user can drag a bottle to feed them.
There is a hittest object (called WormEat) inside the bat's head. When the bottle, which is attached to the cursor touches the bat's head, it toggles to frame 2 of the bottle, which should play an animation of the liquid going down to empty.
This code is all working fine, except that when the code toggles to frame 2 of the bottle, it remains static. The animated Movie Clip doesn't play.
If not, perhaps a Switch statement could work, but I'm not sure how to use that method with Hittest..
Code: var DragArray:Array = [Bat1, Bat2, Bat3, Bat4, Bat5]; for (var i:int = 0; i < DragArray.length; i++) { DragArray[i].addEventListener(Event.ENTER_FRAME, CollisionWorm);
I'll try to make my question pretty short and simple.
[Code]...
So what I'm trying to do is make the character stop when it runs into something. I can do that, but it will only work for one "block" movieclip I put on the stage. What can I do to make this work for multiple "blocks"?
I have several objects in a separate movie and want to perform a hitTest with them and my other object 'knexman' which is noted below in the script. Basically what's happening is that when I trace the output of the hitTest, it increments about 5 or 6 at a time with each enemy collision running into the knexman object. All I want to do is when objects run into the 'knexman', to increment and trace it by one. Once I get it to increment by one I can accurately conditionalize how many lives are left etc.
I'm just curious how you'd hitTestObject a fast moving object? The problem I'm having is that my bullet seems to skip over large areas depending on the speed. Since the speed of my bullet is 40 pixels per millisecond (I think), it seems to only appear on the stage in instances that are 40 pixels apart, so I cannot hitTest in between those instances.
Here's an image of the bullet patturn as I hold down the shoot button. It just looks like this, unchanging. I won't be able to hit the yellow object ever.
I am trying to create a program using random motion of two movie clips and uses hitTest to determine whether the two objects collide with each other. I've gotten hitTest to work with the original movie clips, but when the user loads more movie clips (via a button and duplicateMovieClip):
How would i make hitTest work better with a rotating object(AS2). Becase i have a circle and it if gets near the rotating object (actually pretty far away) it starts the script,(new x and y)
I think thats the rotation script, becuase i took a break for like 4 days becuase it was irritating.
When I implement the hitTest all the objects stop flying. Is it becaus too much is happening and the CPU has to think - I don't think so - my game is so basic. By the way, somewhere along the line I will use loops and arrays but at the moment I know what's going on in my code.
I'm actually working on a multiple collision detection in actionscript 3.0, using pixel collision for a game for my assignment, where an enemy patrols around and searching for the hero. So, i draw a line between the enemy and the hero, to check whether there's some collision happened between those two. if the line colllides with an obstacle such as wall, door, etc. enemy will not be able to see the hero. When i tried a single line collision with a wall (one object only) it works perfectly.
But here's the problem. For the multiple objects collision (several walls and doors included), i added those objects in an arraylist, When i used for loop to check the collision between the line and those objects in the arraylist, none seems to react , except the first object in the arraylist or index 0.
Is there any simpler way to do the multiple collision detection?
I can't seem to get the hitTest to work for my script shown below. I have tested using movieclips created on stage during design time and made to collide during run-time. hitTest works fine in this situation.
But if I use the attachmovie command and create a movie on stage during run-time, that clip cannot hitTest with other movieclips. The hitTest simply doesn't work.
The script below is basically, to create instances of enemymc, and it will fall vertically, hitting a movieclip target_mc which is placed during design-time.
var enemyTime:Number = 0; var enemyLimit:Number = 20; onEnterFrame = function() {
I know you use the HitTest function to check for collisions, but how would I do that the moment a movie clip is dynamically created. So the moment the clip is created it would check if it is overlapping another clip. Also, does it matter if the clips are at different depths?
Lets say that I got movieclips A,B,C,D in my scene and E,F which only come into scene when A hitTest B and C hitTest D.I was able to make the A+B and C+D hitTest functioning properly. But when E,F came into the scene, I tried to make E to hitTest F to get something else function but they won't work.# note that there is some short animation before E & F come into scene.I am pretty sure all the instance names are named properly.
Go to [URL]. My hitTest function only works on the y-axis. This is the code.... onClipEvent (enterFrame) { // _root.speed = speed; if (Key.isDown(Key.UP)) { speed += 3; } if (Key.isDown(Key.DOWN)) {
I've been using asGamer's excellent set of game design tutorials to put together a basic 'ship and enemies' shoot 'em style game - my first proper venture into using AS3 and external class files - and I've hit a problem with executing hit test results. To explain: The game uses Engine (the document class), Ship and Enemy classes. Enemies (new instances of the Enemy class) are added to the stage in the Engine class, where they are also stored in an array, enemyList. The Ship fires a Laser, and the Laser class is where we test for a hit on Enemies.
Now, in asGamer's original version he uses the hitTestObject to test for hits, and if a hit is registered, this line PHP Code: Engine.enemyList[i].takeHit(); Calls a function in the Enemy class to remove the relevany clip. However, as the hitTestObject includes the bounding box of a clip in its hit test, I decided to use Corey O'Neil's Collision Detection Kit for greater accuracy. The CDK CollisionList class returns an array, the each element of which is a clip with which the target object has collided.
The problem this presents is that rather than using PHP Code: Engine.enemyList[i].takeHit(); To deal with a collision, I now use PHP Code: collisions[j].object1.takeHit(); Where 'collisions[n].object1' are the movie clips hit.
When I test the game it throws an error PHP Code: ReferenceError: Error #1069: Property takeHit not found on com.asgamer.basics1.Laser and there is no default value. at com.asgamer.basics1::Laser/loop() Although the movie does not break, and continues to remove destroyed enemies as if there was no problem.
What the problem is with calling the takeHit function via the collisions array rather than the Engine.enemyList array? And perhaps suggest a way to prevent it? I should point out that the 'laser' is in fact a blast that can take out any number of enemies intersecting with the blast radius, which is why I'm using CollisionList to detect hits.
My hitTest function only works on the y-axis This is the code.... onClipEvent (enterFrame) { // _root.speed = speed; if (Key.isDown(Key.UP)) { speed += 3; [Code] .....
How do i get the hitTest() function to test if a certain symbol is hitting another symbol, but, only if drawn parts of the symbol are touching, not thier outer bounds.
NOTE: The following text is my problem and observations, if you afraid to read it all, my problem is easily guessable within the code go ahead and crack at it without my explanation :-p I'm having some trouble with using hitTest(); with movieclips within arrays. I wanted to build a function that checks the hitTest of Movieclips in arrays because the array is dynamic and it would run more efficient and faster this way.
As you may notice it doesn't check just the movieClip in the array, but a movieclip 2 scopes within it. I feel that this is my problem. I noticed in my debugger that that mc doesn't show up, but i put an onLoad event on it to trace its existence when loaded and it shows up fine. I wonder what I'm doing wrong.
i just would like to know how to create an "hitTest" script inside a movieclip that is actually part of that hitTest code?I mean... I have mc A, and mc B. and the current hitTest code im using (that is on the timeline) makes mc A, destroy mc B when collide with it... but there are many mc B on the stage (with the same instance name) so, when mc A collide with one mc B, it destroys ALL mc's B... but i want it to destroy only the mc B that he collides, not all the others... maybe an hitTest script inside a movieclip B would work (somethig like "if MC A hitTest ME = i die" (not all the others)).
How do i get the hitTest() function to test if a certain symbol is hitting another symbol, but, only if drawn parts of the symbol are touching, not thier outer bounds.
i am controlling a tractor mc with right and left keyboard keys and let the user move the tractor till it reach a certain point where it touch a mc i want to go to a certain frame and stop the keyboard event listener and also the hit test listenerso finally the tractor is moved by user till it touches the mc then we will jump to a certain framethis certain frame will not have both of the tractor and the mcPHP Code:
I am building a scrolling image bar, so I've created code that works perfect on one object. However, I need this code to apply to multiple objects at once so that they will move left and right and resize independently from each other (to give this sort of 3d revolving look). Other boxes will be to left and right of the current black box. Code is below as well as link.
Code: function mousetracker(object){ boxstartx=object._x; boxstartwidth=object._width;
I'm working on a project in which I'm using a background movie playing in a Movie Object and on top of that I'm showing texts and images sort of like they are in the movie itself. The way I did this is by making the movie in After Effects and giving every frame in the movie the required position, alpha and scale parameters for each object in the flash movie.
And I don't know how to use the debugger in Actionscript. This is my code. It's in a class called GeoPiece and is being activated when a movieclip of instance GeoPiece is dragged over a movieclip of instance GeoPuzzle. lastObjOver is a place holder and is an instance of GeoPuzzle.
I want the mc from GeoPuzzle to highlight (goto frame "Over") when it is touched over and unhighlight (goto frame lock or out) when untouched. The script works perfectly - unless the GeoPuzzle piece was already locked. For some reason, it then sets itself to null and I can't figure out why.
ETA: The touchevent its responding to is a TOUCH_MOVE attached to the GeoPiece.