Проблема
В какой-то момент мне нужно отобразить 3D-модель, в которой есть определенные узлы, взаимодействия с которыми я хочу прослушивать. Поэтому я добавил событие onSingleTapUp в конкретный дочерний узел. Это событие никогда не запускается. Я провел еще несколько проверок и предполагаю, что проблема в том, что GestureListener обнаруживает только первый узел, на который попадает луч.
Кто-нибудь знает, как решить эту проблему?
Мой код:
Код: Выделить всё
val modelNode = ModelNode(
modelInstance = modelLoader.createModelInstance(assetFileLocation = mainModel),
scaleToUnits = 0.21f,
centerOrigin = Position(0f)
).apply{
setPriority(0) // set Priority to 0 for preferring hit tests on other nodes
position = Position(0.21f/2,0f,0.29f/1.5f)
rotation = Rotation(0f, -120f, 0f)
Log.d("NodeDebug", "Creating FinalModelExperienceNode with size: $size at position: $position")
}
//intially hide all nodes but the 'BikeFull'-Node
modelNode.nodes.entries.forEach { entry ->
// Always show the BikeFull node
if (entry.key.contains("BikeFull")) {
entry.value.isVisible = true
Log.d("NodeDebug", "entry: ${entry.key}, ${entry.value}")
} else {
entry.value.isVisible = false
}
}
//set visibillity and animations for reward nodes
experienceState.rewards.forEachIndexed { index, reward ->
val rewardNode = modelNode.nodes.entries.find { it.key == reward.standardNode }
val rewardNodePuls = modelNode.nodes.entries.find { it.key == reward.blinkingNode }
if (rewardNode != null && rewardNodePuls != null) {
if(reward.display == RewardDisplay.VISIBLE){
rewardNode.value.isVisible = true
rewardNodePuls.value.isVisible = false
}
if(reward.display == RewardDisplay.INVISIBLE){
rewardNode.value.isVisible = false
rewardNodePuls.value.isVisible = false
}
if(reward.display == RewardDisplay.BLINKING) {
var isBlinking = true
rewardNode.value.isVisible = true
rewardNodePuls.value.isVisible = true
rewardNodePuls.value.childNodes.forEach {
it.isVisible = true
}
rewardNode.value.onSingleTapUp = { //
Log.d("NodeDebug", " onSingleTapUp Node: $node")
}
),
...
)
Подробнее здесь: https://stackoverflow.com/questions/787 ... -modelnode