【发布时间】:2021-10-12 11:54:06
【问题描述】:
我是一名初学者 Flash/AS3 程序员,我遇到了一个非常复杂的问题。如何防止精灵在半空中跳跃?我已经看到与“半空中的精灵/跳跃”相关的另一个问题,但我个人无法弄清楚如何在 AS3 中做到这一点。感谢您的任何回复。 代码:
public class DocumentMain extends MovieClip {
private var _vx: Number;
import flash.utils.Timer;
import flash.ui.Keyboard;
import flash.events.Event;
import flash.events.KeyboardEvent;
private var _vy: Number;
public function DocumentMain() {
// constructor code
_vx = 0;
_vy = 0
_startMarker.visible = false;
this.addEventListener("enterFrame", a);
stage.addEventListener("keyDown", b);
stage.addEventListener("keyUp", c);
_windows.addEventListener("enterFrame", handleCollision);
function handleCollision( e:Event ):void
{
{
var collisionWall:Boolean = false;
if (wall.hitTestObject(_windows)) {
collisionWall = true;
}
if (collisionWall) {
while (collisionWall) {
_windows.x += 0.1;
collisionWall = false;
if (wall.hitTestObject(_windows)) {
collisionWall = true;
}
}
_vx = 0;
}
}
}
function a(e:Event):void {
_vy += 2;
_windows.x += _vx;
_windows.y += _vy;
if (_vy > 0) {
if (_windows.y > stage.stageHeight) {
_windows.x = _startMarker.x;
_windows.y = _startMarker.y;
_vy = 0;
}
else {
var collision:Boolean = false;
if (ground.hitTestObject(_windows)) {
collision = true;
}
if (collision) {
while (collision) {
_windows.y -= 0.1;
collision = false;
if (ground.hitTestObject(_windows)) {
collision = true;
}
}
_vy = 0;
}
}
}
}
function b(e:KeyboardEvent):void {
var step:uint = 5
switch (e.keyCode) {
case 37:
_windows.rotationY = -180;
_vx = -7;
break;
case 39:
_windows.rotationY = 0;
_vx = 7;
break;
case 38:
_vy = -20;
break;
}
}
function c(e:KeyboardEvent):void {
switch (e.keyCode) {
case 37:
case 39:
_vx = 0;
}
}
}
}
【问题讨论】:
-
您好,欢迎来到 StackOverflow。请阅读stackoverflow.com/help/how-to-ask(也请查看stackoverflow.com/help/mcve)然后编辑您的问题,并牢记上述指南,以便为您提供帮助。
-
看起来你不想让玩家允许改变垂直速度(也就是“双跳”或更糟),以防你的角色没有站在地上。这更像是一个逻辑问题而不是编码问题,但是您只需要稍微解决一下。
标签: actionscript-3 flash sprite game-development