Home > Backend Development > PHP Tutorial > Game Development Series 1 Enemies in the Game 1_PHP Tutorial

Game Development Series 1 Enemies in the Game 1_PHP Tutorial

WBOY
Release: 2016-07-13 17:26:11
Original
860 people have browsed it

Game Development Series 1: Enemies in the Game (1)
http://www.flashempire.com/school/tutorview.php?id=530
For the current Flash, develop some decent ones The game isn't that weird anymore. The content I cover here is related to game development, but it is all relatively basic knowledge. If you are an expert in game development, you can completely ignore what I describe here. My plan is to do a series of tutorials, and this is one of them.
The game is an interactive work. To put it simply, the user’s behavior will have a certain impact on the progress of the work. When it comes to games, difficulty is always mentioned. The difficulty of the game is: when you want to achieve a certain goal, you will find that it is somewhat difficult to achieve. The harder the difficulty is to overcome, the greater the difficulty. Different types of games have different levels of difficulty, as well as different methods of implementation. For example: Tetris changes the difficulty of the game by changing the speed of the falling blocks, and air combat shooting games achieve different difficulties through different enemy aircraft and different bosses.
In this series, we would like to study with you the movement of enemies in the game, bit by bit. It is best to have some basic knowledge of AS, otherwise you will have a little headache.
1. The most direct tracking
First look at this example:
Assume that the red circle is the player and the green circle is the enemy. Move your mouse and the enemy will follow you.
This is the simplest tracking of enemies. Its principle is: if (player x coordinate enemy x coordinate) { adjust enemy x coordinate to approach player x coordinate} if (player y coordinate enemy y coordinates) {Adjust the enemy's y coordinate to approach the player's y coordinate}
This should be extremely easy to understand. So what should the specific code implementation look like?
We first place two different MovieClips on the stage, one instance is called player, and the other is called enemy.
For convenience, we only use the mouse to move the player, so the code is very simple: player._x = _xmouse-10;player._y = _ymouse-10;updateAfterEvent();
The player can move , let’s solve the problem of coordinate adjustment. Game Development Series 1 Enemies in the Game 1_PHP Tutorial


Looking at the picture above, no matter where the player and the enemy are, as long as they do not overlap, there is always a certain distance between the two characters. We use dx and dy to represent the difference between the x direction and the y direction. According to dx and dy, based on the concept of the enemy being close to the player, we can derive the direction in which the enemy should move.
The enemy should have a certain speed and approach the player based on this speed. So we can first define a variable to represent the enemy's speed: enemySpeed.
Based on the analysis, we can derive the following calculation formula: dx = player._x-enemy._x; dy = player._y-enemy._y; if (Math.abs(dx)>=enemySpeed) { enemy. _x += ((dx>=0) ? enemySpeed ​​: -enemySpeed); } if (Math.abs(dy)>=enemySpeed) { enemy._y += ((dy>=0) ? enemySpeed ​​: -enemySpeed); }
It is observed that we use Math.abs(dx)>=enemySpeed ​​to limit the enemy's movement. In fact, it does not need to be limited, but when the enemy's speed is relatively high, jitter will occur. Because in this case, the difference between the enemy's coordinates and the player's coordinates is small, the enemy may continue to swing during the approach. You can try it with the restrictions removed.
For those who are not familiar with AS, let me explain this sentence: enemy._x += ((dx>=0) ? enemySpeed: -enemySpeed), which is actually equivalent to the following sentence: if (dx >= 0 ){ enemy._x = enemy._x + enemySpeed; } else { enemy._x = enemy._x - enemySpeed; }
This is used to determine the enemy’s movement direction, which is determined based on the positive and negative conditions of dx dy Which direction to move.
Okay, so far, I think everything has been explained clearly. Here is the complete source code of the first frame: var enemySpeed:Number = 2;var dx, dy:Number;/* functions */tracker = function ( ) { player._x = _xmouse-10; player._y = _ymouse-10; dx = player._x-enemy._x; dy = player._y-enemy._y; if (Math.abs(dx)>=enemySpeed) { enemy._x += ((dx>=0) ? enemySpeed ​​: -enemySpeed); } if (Math.abs(dy)>=enemySpeed) { enemy._y += ((dy>=0) ? enemySpeed ​​: - enemySpeed); } updateAfterEvent();};/* run it*/setInterval(tracker, 10);
For AS newbies: The program first defines variables to determine the enemy’s movement speed. This can be changed. Function The tracker is mainly used to handle player movement and enemy movement. updateAfterEvent is set to ensure smoothness, and it is fine without it.
If the tracker function is not triggered, the program will not run. Therefore, we use setInterval to trigger the tracker function every 10 milliseconds. In this way, the program will run normally.
That’s it for this introduction. It’s very simple, isn’t it? Next time we will add some small functions to the current enemy, or limit it.
Please download the source code here.

www.bkjia.comtruehttp: //www.bkjia.com/PHPjc/531979.htmlTechArticleGame Development Series 1: Enemies in the Game (1) http://www.flashempire.com/school/ tutorview.php?id=530 For the current Flash, it is not surprising to develop some decent games...
Related labels:
source:php.cn
Statement of this Website
The content of this article is voluntarily contributed by netizens, and the copyright belongs to the original author. This site does not assume corresponding legal responsibility. If you find any content suspected of plagiarism or infringement, please contact admin@php.cn
Popular Tutorials
More>
Latest Downloads
More>
Web Effects
Website Source Code
Website Materials
Front End Template