如何使对象保持相对于另一个对象

在下面的例子中有一个人和一条船。 他们既有立场,又有导向和速度。

在这里输入图像描述

那家伙站在岸边,想登船。 他改变了立场,现在他正站在船上。

在这里输入图像描述

船改变速度和方向,并前往。 然而,我的角色速度为0,0,0,但我希望他留在船上。 当我移动我的角色时,我想移动,就好像那艘船是我站在的地面一样。

在这里输入图像描述

我的角色如何保持与船的正确alignment? 就像在魔兽世界里,当你登上一艘船或齐柏林飞艇。

这是我的人和船的物理代码:

this.velocity.addSelf(acceleration.multiplyScalar(dTime)); this.position.addSelf(this.velocity.clone().multiplyScalar(dTime)); 

这个人已经提到了他所站的船,从而知道船的位置,速度,方位(甚至可以使用matrix或四元数)。

你最好的运气是学习一些matrixmath。

你应该有一些场景graphics,将角色建立为船的子节点。 然后它将存储它相对于船的位置。

船将有一个转换matrix,你将它应用到子节点,并且子节点可以在matrix上堆叠更多的转换,让你在相对移动的同时在船上移动。