2014-11-15 4 views
1

У меня есть игра в быстром использовании spritekit. При нажатии на экран будет создавать радиальное поле силы тяжести и вывести все остальные объекты. Я создаю поле силы тяжести, как такSwift Spritekit рассеивается Гравитационное поле

var fieldNode = SKFieldNode.radialGravityField(); 

fieldNode.falloff = 0.5; 
fieldNode.strength = 1; 
fieldNode.animationSpeed = 0.5; 

Это работает, но моя проблема в том, что я только хочу спрайт быть затронуты только когда он находится на некотором расстоянии от центра радиальной гравитации, и у меня будет более одного спрайта. Как я вижу это, есть два способа сделать это: 1. Когда спрайт слишком далеко выключит радиальную гравитацию для этого спрайта или 2. Сделайте радиальную гравитацию рассеиваемой после определенного радиуса. Существует также общая гравитация для сцены.

Так что главный вопрос:

Как я могу либо отключить 1 гравитацию для спрайта или сделать радиальную тяжесть рассеиваться?

ответ

2

Свойство region объекта поля определяет его площадь воздействия. Связанный объект SKRegion позволяет определить круговую область по ее радиусу.

Вы также можете использовать fieldBitMask на физическом теле и categoryBitMask на поле, чтобы выборочно контролировать, какие поля влияют на те тела.

0

Попробуйте использовать:

let radius: CGFloat = 1000.0 
    gravityField.strength = Float(pow(radius, 2)) * pow(10, -3)