Джойстик Sprite Kit в качестве пользовательского интерфейса - PullRequest
1 голос
/ 22 октября 2019

Итак, моя проблема в том, что я делаю игру, используя Sprite Kit, и я реализовал джойстик, который мне нужен в игре, и сначала я хотел сделать ограничение скорости, когда вы перетаскиваете джойстик, а также когда я помещаю джойстик в детствек камере вместо того, чтобы поместить это в карту для тестирования, оба не будут работать. Я только начал разработку IOS. Небольшая помощь была бы очень признательна.

Вот мой код для JoyStick:

import UIKit import SpriteKit import Foundation

class Joystick:SKNode{

let base = SKSpriteNode(imageNamed: "JBase")
let stick = SKSpriteNode(imageNamed: "JStick")
var stickActive:Bool = false
var xJoystickDelta = CGFloat()
var yJoystickDelta = CGFloat()
var v:CGVector = CGVector(dx: 0,dy: 0)

func moveStick(location:CGPoint){
    if (stickActive == true) {

    /*let*/ v = CGVector(dx: location.x - base.position.x, dy: location.y - base.position.y)
    let angle = atan2(v.dy, v.dx)

    let deg = angle * CGFloat( 180 / M_PI)


        let length: CGFloat = base.frame.size.height / 2

        let xDist: CGFloat = sin(angle - 1.57079633) * length
        let yDist: CGFloat = cos(angle - 1.57079633) * length

        xJoystickDelta = location.x - base.position.x
        yJoystickDelta = location.y - base.position.y


            if (base.frame.contains(location)) {

            stick.position = location

        } else {

            stick.position = CGPoint(x: base.position.x - xDist, y: base.position.y + yDist)

        }
    } // End stick active test

}// End moveStick Function

func endMoveStick(){

    stick.position = base.position

    self.xJoystickDelta = 0
    self.yJoystickDelta = 0

}// End moveStick fun

func getVector() -> CGVector { return self.v}

Эточто я использую для перемещения игрока:

Сила в классе игрока:

func vectorForce(xDelta:CGFloat, yDelta:CGFloat){

    let xAdd = xSpeed * xDelta
    let yAdd = ySpeed * yDelta
    self.position.x += xAdd
    self.position.y += yAdd

}// End of vectorForce

playerBase.vectorForce(xDelta: joyStick.xJoystickDelta,yDelta: joyStick.yJoystickDelta)
...