游戏开发系列一游戏中的敌人1
游戏开发系列一:游戏中的敌人(1)
http://www.flashempire.com/school/tutorview.php?id=530
对于目前的 Flash 来说,开发一些像模像样的游戏并不是什么奇怪的事情了。我这里所涉及到的内容和开发游戏有关,但是都是一些比较基本的知识。如果您是游戏开发方面的高手,那么完全可以忽略我这里所描述的内容。我的计划是要做一系列的教程,这是其中一个系列。
游戏是一个交互作品,简单说,就是通过用户的行为,会对这个作品的进程产生一定的影响。说到游戏,总要提到难度,游戏的难度在于:当你想要达到某种目的的时候,你会发现它的实现多少有些困难,困难越难克服,难度也就越大。不同类型的游戏有不同的难度,以及不同的实现方法。比如:俄罗斯方块通过改变方块下落的速度来改变游戏的难度,空战射击游戏通过不同的敌机以及不同的 Boss 来实现不同的难度。
在这个系列里面,我们想和大家一起研究一下游戏中敌人的运动方式,一点一点来。AS 基础最好是有一些,不然会稍微有些头疼。
一、最直接的跟踪
首先看看这个例子:
假定红色圆圈是玩家,绿色圆圈是敌人,移动你的鼠标,敌人就会跟着你跑。
这就是最简单的跟踪敌人,它的原理是:如果(玩家x坐标 敌人x坐标){ 调整敌人x坐标,趋近玩家x坐标}如果(玩家y坐标 敌人y坐标){ 调整敌人y坐标,趋近玩家y坐标}
这应该是极其容易理解的。那么具体的代码实现应该是什么样子的呢?
我们先把两个不同的 MovieClip 放置在舞台上,一个实例名叫做 player,另外一个叫做 enemy。
为了方便,我们仅仅通过鼠标来实现玩家的移动,于是代码就很简单了:player._x = _xmouse-10;player._y = _ymouse-10;updateAfterEvent();
玩家可以移动了,下面来解决坐标调整的问题。
看上面的图片,不管玩家和敌人处于什么位置,只要不重合,两个角色之间总是具有一定距离的,我们用 dx 和 dy 来代表 x 方向和 y 方向的差值。根据 dx 和 dy,基于敌人靠近玩家的概念,我们就可以得出敌人应该前进的方向。
敌人应该具有一定的速度,根据这个速度向玩家靠近。所以我们可以先定义一个变量来代表敌人的速度:enemySpeed。
根据分析,我们可以得出下面的计算公式: 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); }
观察到,我们用了一个 Math.abs(dx)>=enemySpeed 来限制敌人运动,其实也可以不限制,但是那样在敌人速度比较高的时候,就会发生抖动现象。因为这种情况下,敌人的坐标和玩家坐标之间差值小,敌人可能会在逼近过程中不断摇摆。大家可以去掉限制尝试一下。
对于 AS 不太熟悉的,我来解释一下这句: enemy._x += ((dx>=0) ? enemySpeed : -enemySpeed),其实是相当于下面这句: if (dx >= 0){ enemy._x = enemy._x + enemySpeed; } else { enemy._x = enemy._x - enemySpeed; }
这是用来判断敌人的运动方向的,根据 dx dy 的正负情况,来决定向哪个方向运动。
好,到此为止,我想已经都解释清楚了,下面是完整的第一帧源代码: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);
针对 AS 新手:程序先定义了变量,确定了敌人的运动速度,这个是可以更改的,函数 tracker 则主要用来处理玩家移动以及敌人移动。 updateAfterEvent 是为了保证流畅度设定的,没有也可以。
如果不触发 tracker 函数,那么这个程序是不会跑起来的,所以,我们使用了 setInterval,每隔 10 毫秒触发一次 tracker 函数,这样,程序就正常运行了。
这一次的介绍就到这里了,很简单是不是?下一次我们要给目前的这个敌人增加一些小功能,或者说,限制一下它。
这次的源代码请在这里下载。

Outils d'IA chauds

Undresser.AI Undress
Application basée sur l'IA pour créer des photos de nu réalistes

AI Clothes Remover
Outil d'IA en ligne pour supprimer les vêtements des photos.

Undress AI Tool
Images de déshabillage gratuites

Clothoff.io
Dissolvant de vêtements AI

AI Hentai Generator
Générez AI Hentai gratuitement.

Article chaud

Outils chauds

Bloc-notes++7.3.1
Éditeur de code facile à utiliser et gratuit

SublimeText3 version chinoise
Version chinoise, très simple à utiliser

Envoyer Studio 13.0.1
Puissant environnement de développement intégré PHP

Dreamweaver CS6
Outils de développement Web visuel

SublimeText3 version Mac
Logiciel d'édition de code au niveau de Dieu (SublimeText3)

Si Nvgpucomp64.dll provoque des plantages fréquents de votre jeu, les solutions fournies ici peuvent vous aider. Ce problème est généralement dû à des pilotes de carte graphique obsolètes ou corrompus, à des fichiers de jeu corrompus, etc. La résolution de ces problèmes peut vous aider à résoudre les plantages du jeu. Le fichier Nvgpucomp64.dll est associé aux cartes graphiques NVIDIA. Lorsque ce fichier plante, votre jeu plante également. Cela se produit généralement dans des jeux comme LordsoftheFallen, LiesofP, RocketLeague et ApexLegends. Nvgpucomp64.dll plante les jeux sur un PC Windows si N

Le jeu superpeople peut être téléchargé via le client Steam. La taille de ce jeu est d'environ 28 Go. Le téléchargement et l'installation prennent généralement une heure et demie. Voici un tutoriel de téléchargement et d'installation spécifique pour vous ! Nouvelle méthode pour postuler aux tests fermés globaux 1) Recherchez "SUPERPEOPLE" dans la boutique Steam (téléchargement du client Steam) 2) Cliquez sur "Demander l'accès aux tests fermés SUPERPEOPLE" en bas de la page de la boutique "SUPERPEOPLE" 3) Après avoir cliqué sur le bouton de demande d'accès, le jeu "SUPERPEOPLECBT" peut être confirmé dans la bibliothèque Steam 4) Cliquez sur le bouton d'installation dans "SUPERPEOPLECBT" et téléchargez

Cet outil de programmation assistée par l'IA a mis au jour un grand nombre d'outils de programmation assistée par l'IA utiles à cette étape de développement rapide de l'IA. Les outils de programmation assistés par l'IA peuvent améliorer l'efficacité du développement, améliorer la qualité du code et réduire les taux de bogues. Ils constituent des assistants importants dans le processus de développement logiciel moderne. Aujourd'hui, Dayao partagera avec vous 4 outils de programmation assistés par l'IA (et tous prennent en charge le langage C#). J'espère que cela sera utile à tout le monde. https://github.com/YSGStudyHards/DotNetGuide1.GitHubCopilotGitHubCopilot est un assistant de codage IA qui vous aide à écrire du code plus rapidement et avec moins d'effort, afin que vous puissiez vous concentrer davantage sur la résolution de problèmes et la collaboration. Git

Selon les informations de ce site du 20 avril, ASUS a récemment publié une mise à jour du BIOS, qui améliore l'instabilité telle que les plantages lors de l'exécution de jeux sur les processeurs Intel de 13e/14e génération. Ce site avait précédemment signalé que des joueurs avaient signalé des problèmes, notamment lors de l'exécution de la version démo PC du jeu de combat « Tekken 8 » de Bandai Namco, même si l'ordinateur dispose de suffisamment de mémoire et de mémoire vidéo, le système plante et affiche un message d'erreur indiquant une mémoire insuffisante. Des problèmes de crash similaires sont également apparus dans de nombreux jeux tels que "Battlefield 2042", "Remnant 2", "Fortnite", "Lord of the Fallen", "Hogwarts Legacy" et "The Finals". RAD a publié un long article en février de cette année, expliquant que le problème de crash du jeu est une combinaison de paramètres du BIOS, d'une fréquence d'horloge élevée et d'une consommation d'énergie élevée des processeurs Intel.

Selon les informations de ce site le 22 juillet, les médias étrangers twistedvoxel ont découvert le nom de code de développement PS5 "Trinity" et les fichiers de configuration de la qualité d'image associés dans le dernier code de mise à jour "World Part 1" de "No Man's Sky", ce qui prouve que Sony est attendu Le modèle PS5Pro a été récemment lancé. Bien que "No Man's Sky" ait amélioré les performances graphiques du jeu dans les mises à jour récentes, de nombreux joueurs pensent toujours que cela pourrait être HelloGames ouvrant la voie à de nouveaux modèles, selon les derniers préréglages graphiques, sous la résolution dynamique du jeu PS5 Pro. la mise à l'échelle a été augmentée de 0,6 à 0,8, ce qui signifie que le jeu a une résolution moyenne plus élevée et que certains détails graphiques sont mis à niveau du niveau « Élevé » au niveau « Ultra », mais depuis chaque jeu

Le 3 mars 2022, moins d'un mois après la naissance de Devin, le premier programmeur d'IA au monde, l'équipe NLP de l'Université de Princeton a développé un agent SWE pour programmeur d'IA open source. Il exploite le modèle GPT-4 pour résoudre automatiquement les problèmes dans les référentiels GitHub. Les performances de l'agent SWE sur l'ensemble de tests du banc SWE sont similaires à celles de Devin, prenant en moyenne 93 secondes et résolvant 12,29 % des problèmes. En interagissant avec un terminal dédié, SWE-agent peut ouvrir et rechercher le contenu des fichiers, utiliser la vérification automatique de la syntaxe, modifier des lignes spécifiques et écrire et exécuter des tests. (Remarque : le contenu ci-dessus est un léger ajustement du contenu original, mais les informations clés du texte original sont conservées et ne dépassent pas la limite de mots spécifiée.) SWE-A

Didacticiel d'application mobile de développement du langage Go Alors que le marché des applications mobiles continue de croître, de plus en plus de développeurs commencent à explorer comment utiliser le langage Go pour développer des applications mobiles. En tant que langage de programmation simple et efficace, le langage Go a également montré un fort potentiel dans le développement d'applications mobiles. Cet article présentera en détail comment utiliser le langage Go pour développer des applications mobiles et joindra des exemples de code spécifiques pour aider les lecteurs à démarrer rapidement et à commencer à développer leurs propres applications mobiles. 1. Préparation Avant de commencer, nous devons préparer l'environnement et les outils de développement. tête

La série Xiaomi Mi 15 devrait être officiellement lancée en octobre, et les noms de code de sa série complète ont été exposés dans la base de code MiCode des médias étrangers. Parmi eux, le produit phare Xiaomi Mi 15 Ultra porte le nom de code « Xuanyuan » (qui signifie « Xuanyuan »). Ce nom vient de l'Empereur Jaune dans la mythologie chinoise, qui symbolise la noblesse. Le Xiaomi 15 porte le nom de code « Dada », tandis que le Xiaomi 15Pro s'appelle « Haotian » (qui signifie « Haotian »). Le nom de code interne du Xiaomi Mi 15S Pro est « dijun », qui fait allusion à l'empereur Jun, le dieu créateur du « Classique des montagnes et des mers ». Couvertures de la série Xiaomi 15Ultra
