尊重整个haxeflixel吐温的碰撞

尊重整个haxeflixel吐温的碰撞,haxe,tween,haxeflixel,Haxe,Tween,Haxeflixel,我已经使用flixel.tweens.FlxTween在haxe中为侧面滚动平台实现了一些看似基本的tweens。例如: public static function lunge(sprite: FlxSprite) { var deltax:Int = sprite.facing==FlxObject.LEFT?-50:50; return FlxTween.tween(sprite, { x:sprite.x+deltax,y:sprite.y-10 }, 0.10, { t

我已经使用flixel.tweens.FlxTween在haxe中为侧面滚动平台实现了一些看似基本的tweens。例如:

public static function lunge(sprite: FlxSprite) {
    var deltax:Int = sprite.facing==FlxObject.LEFT?-50:50;
    return FlxTween.tween(sprite, { x:sprite.x+deltax,y:sprite.y-10 }, 0.10, { type: FlxTween.ONESHOT } );
}
这就像预期的一样——精灵向前弓箭步50像素,向上10像素。然而,精灵会高兴地、莫名其妙地冲刺穿过我的波浪贴图和其他精灵,而忽略在两个精灵之间正常工作的碰撞。我试着在速度上吐温:

public static function lungeV(sprite: FlxSprite) {
    var newVelocity:FlxPoint = new FlxPoint(sprite.velocity.x*3, -40);
    return FlxTween.tween(sprite, { velocity: newVelocity }, 0.10, { type: FlxTween.ONESHOT } );
}
这将编译并运行,但在调用函数时,我得到了一个“不受支持的操作”(堆栈跟踪仅指haxe/haxeflixel代码,而不是我自己的代码):

我也试过使用

{velocity.x: sprite.velocity.x * 3, ... }
但haxe不喜欢这样:

Effects.hx:39: characters 36-37 : Missing ;
Effects.hx:39: characters 37-38 : Unexpected :
Effects.hx:39: characters 37-38 : Unexpected :
Compilation failed.
(为了清晰起见,删除了完整路径。第39行是FlxTween调用。)

和解决方案一样,我找不到概述哪些特定属性的文档。我在没有Tween的情况下实现了相同的功能,但现在我只想知道这是否可行。

试试这个:

FlxTween.tween(sprite.velocity, { x: newVelocity }, 0.10, { type: FlxTween.ONESHOT } );
我不知道它是否会像你预期的那样工作:tween会随着时间的推移改变速度-它不会将精灵移动到所需的位置。对于有碰撞的移动,最好的路线是避免FLX,因为它们完全忽略FLX碰撞


如果您必须使用FlxTween进行移动,那么理想的做法是使用您自己的碰撞检测。

我觉得没有注意到FlxTween很愚蠢。tween要求动态。稍微调整一下,这就行了。
FlxTween.tween(sprite.velocity,{x:sprite.velocity.x*40,y:-100},0.20,{type:FlxTween.BACKWARD})
FlxTween.tween(sprite.velocity, { x: newVelocity }, 0.10, { type: FlxTween.ONESHOT } );