所以我的问题是,我使用Sprite Kit和Ive制作了我在游戏中需要的操纵杆的游戏,首先我想在拖动操纵杆时以及当我还是小孩的时候将其置于速度上限而不是将其放在地图上进行测试都无法正常工作。我刚刚开始IOS开发,将不胜感激。
这是我的JoyStick代码:
导入UIKit 导入SpriteKit 导入基金会
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)