I'm using Slick2D and I was wondering if anyone knew how to tell if the player collided with the ground or a wall. So far I have it where it checks if the player hit something solid and if so it stops. What do people normally do?
Well there's one easy way to create the object on the screen falling down.That's what I normally do.
fallingdown = true;
if(fallingdown){
imageY++; (or Y-- im not really sure about this..)
}
Okey, know our image is going down.Next thing we wanna is to collide when reach's the end of the screen.Let's say my Y of the screen is 200.
if(imageY >= 200){
imageY == 200;
}
Well...this is going to help you for the collision because it's not really easy to explain. http://www.youtube.com/watch?v=1qZk6dIW46Q
Related
enter image description here
This script is supposed to End the game if Player hits something infront(z axis). But instead, the Player dies even if it hits anything in x and even y axis(which is ground) so game ends the moment my player touches the ground. Requesting help. I'm new to Unity and c#. So please don't abuse me if the solution is too obvious.
I think the player dies immediately because the ground also have a collider which the player touches. try to add a tag to the object in front the player, and in your code check the tag before calling the end game function.
if(hit.gameobject.tag == "tag" && hit.point.z > transform.position.z + controller.radius)
Death();
The AI of my enemies that I made for my game is simple. They just follow the player (more precisely, they look in the direction of the player and go forward)
Step Event:
if (instance_exists(obj_player)){
direction = point_direction(x,y,obj_player.x,obj_player.y);
}
speed = spd;
But they keep on overlapping each other and go on top of the player. I've tried researching but all the forums said was to use place_free() and xprevious & yprevious, but I have no idea how to use them. How do I fix this?
Thanks :)
You can read about this on the gamemaker documentation : https://docs.yoyogames.com/source/dadiospice/002_reference/movement%20and%20collisions/collisions/place_free.html
basically, what you want to do is avoid moving your instance if that means causing a collision. x_previous and y_previous will be used to cancel the move by going back to the previous position.
But I think it's better to check the place before moving, so I would add at the end of you script :
if (place_free(x+hspeed, y+vspeed)) speed = spd;
else speed = 0;
that way, the ennemy will stop instead of stepping above an other instance.
A little upgrade would be the following : if there is a collision detected, check if you can move along a single axis instead (x or y) and do it.
I am programming a simple top-down car game on game-maker where the purpose of the game is to get as many points/laps by driving the car around the oval shaped track.
The car drives with speed = 5 and changes direction with the code direction = direction + 2;
image_angle = direction;
If you couldn't tell already, i'm new to coding however i have been searching for a solution for at least a fortnight and haven't found anything- How can i make the game add a point every time that the car goes through the finish line? I suppose there would have to be a collision event between the car and the finish line but i do not understand the code that would take place in order to add a point and if I did code the game to add a point i anticipate that there will be a bug where by several points will be added (instead of 1) when the car goes over the finish line as it is "colliding" the whole way as it goes over.
How can I make a point be added every time the car goes around the track?
If you need any further information i'd be glad to help. Thank-you.
With Kake_Fisk's help i set up 3 midway lines around the track and created a collision event between the car and the midway lines: prntscr.com/c4uecl - the problem is that add_point doesn't actually do anything and i would be glad to have some help. Another problem i am encountering is that he car was originally meant to turn with the mouse button 1 but when i tried that the car only turned when i aimed on it if you get what i'm saying, do you have a solution for that also?
obj_car:
creation event:
points = 0; //instance variable
step event:
if(place_meeting(x,y,obj_line)) {
points += 1;
}
if(points == 3) {
room_goto(rm_win);
}
First, you have an other problem you need to think about. What stops the player from just driving forth and back over the goal line? You would need to add invisible lines throughout the track. If all these lines have been passed, you know the player has driven the car through the whole track.
You want to trigger some code once, when the car hits the goal line. By utilizing the previous system, this can be done quite easily. In collision with goal line, use something like this:
// If all the invisible lines in the track has been visited
if (midway_lines == 3)
{
// Sets the variable back to 0 so this piece of code only gets executed once
midway_lines = 0;
add_point();
}
I've been trying to do some GML scripting but got totally stuck at some point.
I want enemies to attack my main character but without overlapping. So, I would say.
//enemy is moving left-to-right...
if place_meeting(x+1, y, enemy){ //if there's a collision with another enemy
if (other enemy).is_attacking{ // ???
// checks if the colliding enemy is attacking, if true, it should attack as well...
is_attacking=true;
}else{
//walks
}
This is an image that describes what I'm trying to get (note that enemies know they should be attacking even though they're not in direct contact with the main character, just because an enemy besides is attacking)
I was finally able to do it thanks to the instance place function.
I will post the code in case someone need somethin similar
if place_meeting(x+5, y, malo){ //malo means enemy on spanish, i use to write multilingual code, lol :P
var inst;
inst=instance_place(x+15,y,malo); //x varies on sprite size. it basically returns the unique id of the object that's 15 pixels on the right of self (malo)
with (inst){
if (is_attacking){
other.is_attacking=true; //if collided enemy is attacking, then this(other) enemy should attack too. search more about the width statement if you don't catch this part
}else{
other.is_attacking=false;
hspeed=1;
}
}
}else if place_meeting(x+3, y, character){
is_attacking=true;
}else{
is_attacking=false;
hspeed=1;
}
and the result
I have a small little swf that I'm trying to get to work while the webpage is using https/ssl. I'm passing into the swf the fact that the page is using https and have conditional logic as such:
if ( secure ) {
pollChannel = new AMFChannel('my-secure-polling-amf','https://' + globalDomain + '/flex2gateway/cfamfpollingsecure');
}
else {
pollChannel = new AMFChannel('cf-polling-amf','http://' + globalDomain + '/flex2gateway/cfamfpolling');
}
When the page is http it uses the correct endpoint no problem. When secure == true for whatever reason the browser is reporting its using http://somedomain.local/flex2gateway/cfamfpollingsecure, not https.
Anybody have a clue why??? I don't understand why it would adjust itself like that.
Any help is much appreciated!
Lucky for you I had the exact same mystery issue last week and the fix is extremely simple (once you know where to look, that is; I've been digging through the source code for a while to figure it out):
you just have to use SecureAMFChannel instead of the regular AMFChannel