Flame 1.8.2中JoystickComponent无velocity属性编译错误求助
问题解决:Flame 1.8.2中JoystickComponent无velocity属性的编译错误
错误原因
你使用的Flame 1.8.2版本里,JoystickComponent并未提供velocity这个属性,而你参考的文档对应更高版本的API,因此触发编译错误:
The getter 'velocity' isn't defined for the type 'JoystickComponent'
修复方案
在Flame 1.8.2中,需要通过joystick.relativeDelta获取摇杆的归一化方向向量,再结合自定义的maxSpeed计算移动速度。修改update方法即可解决问题:
@override void update(double dt) { if (joystick.direction != JoystickDirection.idle) { // 用relativeDelta替代velocity position.add(joystick.relativeDelta * maxSpeed * dt); angle = joystick.delta.screenAngle(); } }
完整修复后的代码
class JoystickPlayer extends SpriteComponent with HasGameRef { JoystickPlayer(this.joystick) : super( anchor: Anchor.center, size: Vector2.all(100.0), ); /// Pixels/s double maxSpeed = 300.0; final JoystickComponent joystick; @override Future<void> onLoad() async { sprite = await gameRef.loadSprite('layers/player.png'); position = gameRef.size / 2; } @override void update(double dt) { if (joystick.direction != JoystickDirection.idle) { position.add(joystick.relativeDelta * maxSpeed * dt); angle = joystick.delta.screenAngle(); } } }
内容的提问来源于stack exchange,提问作者Vaheed01
相关产品推荐
相关产品推荐

