Я новичок в разработке Swift и Sphero, но меня попросили сделать игру на основе столкновений с Sphero. Мне до сих пор удалось реализовать вождение, но у меня проблемы с столкновениями. Я искал примеры кода и подобные проблемы по всему Интернету, но все, что я нашел, основано на других языках, таких как JAVA или ObjectiveC.Невозможно использовать обнаружение столкновения Sphero с Swift?
код, предоставленный официальной странице SPHERO заключается в следующем:
**Enable collision detection**
robot.enableCollisions(true)
robot.sendCommand(RKConfigureCollisionDetectionCommand(forMethod: .Method3, xThreshold: 50, xSpeedThreshold: 30, yThreshold: 200, ySpeedThreshold: 0, postTimeDeadZone: 0.2))
**Handle Async Messages on collision**
func handleAsyncMessage(message: RKAsyncMessage!, forRobot robot: RKRobotBase!) {
if let collisionMessage = message as? RKCollisionDetectedAsyncData {
// handleCollisionDetected
}
}
Я попытался это во многих отношениях, но при выполнении не будет посылать любую команду или даже получить доступ к методу handleAsyncMessage, поэтому я Я начинаю думать, что этот код не реализован для Swift. Эти сомнения были усилены, когда я обнаружил, что метод потоковой передачи был реализован где-то на официальной странице ObjectiveC, но для Swift я мог найти только // Coming Soon !.
Collisions
[_robot sendCommand:[[RKConfigureCollisionDetectionCommand alloc]
initForMethod:RKCollisionDetectionMethod3
xThreshold:50 xSpeedThreshold:30 yThreshold:200 ySpeedThreshold:0 postTimeDeadZone:.2]];
...
- (void)handleAsyncMessage:(RKAsyncMessage *)message forRobot:(id<RKRobotBase>)robot {
if([message isKindOfClass:[RKCollisionDetectedAsyncData class]]) {
RKCollisionDetectedAsyncData *collisionAsyncData = (RKCollisionDetectedAsyncData *) message;
float impactAccelX = [collisionAsyncData impactAcceleration].x;
float impactAccelY = [collisionAsyncData impactAcceleration].y;
float impactAccelZ = [collisionAsyncData impactAcceleration].z;
float impactAxisX = [collisionAsyncData impactAxis].x;
float impactAxisY = [collisionAsyncData impactAxis].y;
float impactPowerX = [collisionAsyncData impactPower].x;
float impactPowerY = [collisionAsyncData impactPower].y;
float impactSpeed = [collisionAsyncData impactSpeed];
}
}
Должен ли я изменить язык на ObjectiveC, или вы, ребята, знаете какой-либо способ реализовать это с помощью Swift? Спасибо заранее.
Вот именно, эта штука сводила меня с ума ... Спасибо вам большое! –