Скрытие имени имеет смысл, потому что оно предотвращает двусмысленности в разрешении имен.
Рассмотрим этот код:
class Base
{
public:
void func (float x) { ... }
}
class Derived: public Base
{
public:
void func (double x) { ... }
}
Derived dobj;
Если Base::func(float)
не был скрыт Derived::func(double)
в Derived, мы вызывали бы функцию базового класса при вызове dobj.func(0.f)
, хотя поплавок можно было бы продвигать до двойного.
Ссылка: http://bastian.rieck.ru/blog/posts/ 2016 / name_hiding_cxx /
Комментарий Джеймса П. решил это для меня.
Использование SCNSceneRendererDelegate
означает, что я могу запускать код несколько раз в каждом цикле рендеринга, чтобы проверить, прекратил ли узел движение.
Затем я столкнулся с этой проблемой SceneKit: isResting никогда не возвращает true . isResting всегда был ложным. Единственный способ получить то, что мне было нужно, это использовать Int(SCNNode.physicsBody?.velocity.z)
, и когда это ноль, мой узел полностью лежит на полу