【发布时间】:2014-08-05 07:51:21
【问题描述】:
我的数学技能再次困扰着我。我正在为移动设备构建一个垂直平台游戏,其中角色跳到平台上,试图在避免危险的同时尽可能高。我将其设置为相机不会移动,而是在每次角色与平台之间发生碰撞时平台和角色向下移动。我无法弄清楚如何将当前正在碰撞的平台和玩家向下移动到主摄像机游戏对象中 Y 轴上的目标位置 -4.0。这是我必须将角色/平台向下移动到目标位置的代码:
/*********************************** Update **********************************/
void Update(){
if (platformMove == true) {
PositionChanging ();
StartCoroutine(WaitToMove());
}
}
/******************** Platform Holder Position Changing **********************/
void PositionChanging(){
Vector2 positionA = new Vector2 (platformHolder.transform.position.x, -4);
newPosition = positionA;
platformHolder.transform.position = Vector2.Lerp(platformHolder.transform.position, newPosition, Time.deltaTime * smooth);
}
//************************ Collision Function ********************************/
void OnCollisionEnter2D(Collision2D coll)
{
foreach(ContactPoint2D contact in coll.contacts)
{
platformMove = true;
currentPlatformPosition = (coll.transform.position.y);
}
}
}
//********************** Wait to Set platformMove to false *******************/
IEnumerator WaitToMove(){
yield return new WaitForSeconds(0.5f);
platformMove = false;
}
如您所见,我在 OnCollision2D 函数中将当前碰撞位置分配给 currentPlatformPosition,但我还没有对它做任何事情。我很确定我应该在某个地方使用它!我已经尝试了一百万种不同的东西,并接近了几次,但我似乎无法确定这一点。
当平台被实例化时,它们被放置在 Platform_Holder GameObject 中。我的主角也在那里,所以当我重新定位 Platform_Holder 时,他会随着平台移动。
这是一个视觉表示:
【问题讨论】: