游戏开发系列一游戏中的敌人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 函数,这样,程序就正常运行了。
这一次的介绍就到这里了,很简单是不是?下一次我们要给目前的这个敌人增加一些小功能,或者说,限制一下它。
这次的源代码请在这里下载。

핫 AI 도구

Undresser.AI Undress
사실적인 누드 사진을 만들기 위한 AI 기반 앱

AI Clothes Remover
사진에서 옷을 제거하는 온라인 AI 도구입니다.

Undress AI Tool
무료로 이미지를 벗다

Clothoff.io
AI 옷 제거제

Video Face Swap
완전히 무료인 AI 얼굴 교환 도구를 사용하여 모든 비디오의 얼굴을 쉽게 바꾸세요!

인기 기사

뜨거운 도구

메모장++7.3.1
사용하기 쉬운 무료 코드 편집기

SublimeText3 중국어 버전
중국어 버전, 사용하기 매우 쉽습니다.

스튜디오 13.0.1 보내기
강력한 PHP 통합 개발 환경

드림위버 CS6
시각적 웹 개발 도구

SublimeText3 Mac 버전
신 수준의 코드 편집 소프트웨어(SublimeText3)

뜨거운 주제











Nvgpucomp64.dll로 인해 게임이 자주 충돌하는 경우 여기에 제공된 해결 방법이 도움이 될 수 있습니다. 이 문제는 일반적으로 오래되거나 손상된 그래픽 카드 드라이버, 손상된 게임 파일 등으로 인해 발생합니다. 이러한 문제를 해결하면 게임 충돌을 처리하는 데 도움이 될 수 있습니다. Nvgpucomp64.dll 파일은 NVIDIA 그래픽 카드와 연결되어 있습니다. 이 파일이 충돌하면 게임도 충돌합니다. 이는 일반적으로 LordsofttheFallen, LiesofP, RocketLeague 및 ApexLegends와 같은 게임에서 발생합니다. Nvgpucomp64.dll이 N인 경우 Windows PC에서 게임과 충돌함

슈퍼피플 게임은 Steam 클라이언트를 통해 다운로드할 수 있습니다. 이 게임의 크기는 일반적으로 다운로드 및 설치에 1시간 30분 정도 걸립니다. 새로운 글로벌 비공개 테스트 신청 방법 1) 스팀 스토어에서 'SUPERPEOPLE' 검색(스팀 클라이언트 다운로드) 2) 'SUPERPEOPLE' 스토어 페이지 하단의 'SUPERPEOPLE 비공개 테스트 접근 권한 요청' 클릭 3) 접근 요청 버튼, "SUPERPEOPLECBT" 게임은 스팀 라이브러리에서 확인하실 수 있습니다. 4) "SUPERPEOPLECBT"에서 설치 버튼을 클릭하신 후 다운로드 받으세요.

이 AI 지원 프로그래밍 도구는 급속한 AI 개발 단계에서 유용한 AI 지원 프로그래밍 도구를 많이 발굴했습니다. AI 지원 프로그래밍 도구는 개발 효율성을 높이고, 코드 품질을 향상시키며, 버그 발생률을 줄일 수 있습니다. 이는 현대 소프트웨어 개발 프로세스에서 중요한 보조자입니다. 오늘 Dayao는 4가지 AI 지원 프로그래밍 도구(모두 C# 언어 지원)를 공유하겠습니다. 이 도구가 모든 사람에게 도움이 되기를 바랍니다. https://github.com/YSGStudyHards/DotNetGuide1.GitHubCopilotGitHubCopilot은 더 빠르고 적은 노력으로 코드를 작성하는 데 도움이 되는 AI 코딩 도우미이므로 문제 해결과 협업에 더 집중할 수 있습니다. 힘내

4월 20일 이 사이트의 소식에 따르면 ASUS는 최근 Intel 13/14세대 프로세서에서 게임 실행 시 충돌 등의 불안정성을 개선하는 BIOS 업데이트를 출시했습니다. 이 사이트는 이전에 플레이어들이 Bandai Namco의 격투 게임 "철권 8"의 PC 데모 버전을 실행할 때 컴퓨터에 충분한 메모리와 비디오 메모리가 있어도 시스템이 충돌하고 메모리 부족을 나타내는 오류 메시지가 표시되는 등의 문제를 보고했다고 보고했습니다. 유사한 충돌 문제는 "Battlefield 2042", "Remnant 2", "Fortnite", "Lord of the Fallen", "Hogwarts Legacy" 및 "The Finals"와 같은 많은 게임에서도 나타났습니다. RAD는 올해 2월에 긴 기사를 게재하여 게임 충돌 문제가 Intel 프로세서의 BIOS 설정, 높은 클럭 주파수 및 높은 전력 소비의 조합이라고 설명했습니다.

22일 본 사이트 소식에 따르면 외신인 Twistedvoxel은 '노 맨스 스카이'의 최신 '월드 파트 1' 업데이트 코드에서 소문난 PS5 개발 코드명 'Trinity'와 관련 화질 구성 파일을 발견해 소니가 PS5Pro 모델이 최근 출시되었습니다. "No Man's Sky"는 최근 업데이트를 통해 게임의 그래픽 성능을 향상시켰지만, 많은 플레이어들은 이것이 HelloGames가 PS5 Pro의 최신 그래픽 사전 설정에 따르면 사전에 새로운 모델의 길을 닦은 것이라고 믿고 있습니다. 스케일링이 0.6에서 0.8로 증가했습니다. 이는 게임의 평균 해상도가 더 높고 일부 그래픽 세부 사항이 "높음"에서 "울트라" 수준으로 업그레이드되었음을 의미합니다.

세계 최초의 AI 프로그래머 데빈(Devin)이 태어난 지 한 달도 채 안 된 2022년 3월 3일, 프린스턴 대학의 NLP팀은 오픈소스 AI 프로그래머 SWE-에이전트를 개발했습니다. GPT-4 모델을 활용하여 GitHub 리포지토리의 문제를 자동으로 해결합니다. SWE-bench 테스트 세트에서 SWE-agent의 성능은 Devin과 유사하며 평균 93초가 걸리고 문제의 12.29%를 해결합니다. SWE-agent는 전용 터미널과 상호 작용하여 파일 내용을 열고 검색하고, 자동 구문 검사를 사용하고, 특정 줄을 편집하고, 테스트를 작성 및 실행할 수 있습니다. (참고: 위 내용은 원문 내용을 약간 조정한 것이지만 원문의 핵심 정보는 그대로 유지되며 지정된 단어 수 제한을 초과하지 않습니다.) SWE-A

Go 언어 개발 모바일 애플리케이션 튜토리얼 모바일 애플리케이션 시장이 지속적으로 성장함에 따라 점점 더 많은 개발자가 Go 언어를 사용하여 모바일 애플리케이션을 개발하는 방법을 모색하기 시작했습니다. 간단하고 효율적인 프로그래밍 언어인 Go 언어는 모바일 애플리케이션 개발에서도 강력한 잠재력을 보여주었습니다. 이 기사에서는 Go 언어를 사용하여 모바일 애플리케이션을 개발하는 방법을 자세히 소개하고 독자가 빠르게 시작하고 자신의 모바일 애플리케이션 개발을 시작할 수 있도록 특정 코드 예제를 첨부합니다. 1. 준비 시작하기 전에 개발 환경과 도구를 준비해야 합니다. 머리

PlayerUnknown's Battlegrounds 게임의 프레임 속도를 최적화하여 게임의 부드러움과 성능을 향상시키십시오. 방법: 그래픽 카드 드라이버 업데이트: 컴퓨터에 최신 그래픽 카드 드라이버가 설치되어 있는지 확인하십시오. 이는 게임 성능을 최적화하고 가능한 호환성 문제를 해결하는 데 도움이 됩니다. 낮은 게임 설정: 해상도 감소, 특수 효과 및 그림자 감소 등 게임의 그래픽 설정을 낮은 수준으로 조정합니다. 이렇게 하면 컴퓨터의 부하가 줄어들고 프레임 속도가 높아집니다. 불필요한 백그라운드 프로그램 종료: 게임이 실행되는 동안 다른 불필요한 백그라운드 프로그램과 프로세스를 종료하여 시스템 리소스를 확보하고 게임 성능을 향상시킵니다. 하드 드라이브 공간 지우기: 하드 드라이브에 여유 공간이 충분한지 확인하세요. 불필요한 파일 및 프로그램 삭제, 임시 파일 및 휴지통 정리 등을 수행합니다. 수직 동기화(V-Sync) 끄기: 게임 중
