Unity - 2D 移动平台育儿
Posted
技术标签:
【中文标题】Unity - 2D 移动平台育儿【英文标题】:Unity - 2D Moving platforms parenting 【发布时间】:2015-02-25 20:13:14 【问题描述】:我正在为 2D 游戏中移动平台上的角色育儿问题而苦苦挣扎。
我正在使用 OnTriggerEnter2D() 来检测玩家何时踏上移动平台。它改变了他的父母到那个平台。 使用普通的移动平台(左右)一切正常,如果一个角色站在那个平台上,他会平行移动,他可以走路、跳跃等。 当我使用悬挂在与 HingeJoint2Ds 连接的两条绳索上的平台时出现问题。 玩家应该通过左右行走来摆动该平台。 使用键盘输入时一切正常,但使用触摸输入控制器时,当玩家不移动时,角色会停留在一个地方并且不会随着该平台移动。在层级面板中一切都是正确的,玩家是平台的孩子,平台在移动,但角色没有。
对于移动角色,我使用的是这个:(角色控制器的一部分)
float move = Input.GetAxis ("Horizontal”);
rigidbody2D.velocity = new Vector2 (move * maxSpeed, rigidbody2D.velocity.y);
键盘和触摸输入也是如此。不同之处仅在于“移动”变量的获取。 移动和摆动平台的解决方案也是相同的。 (层次结构、父对象、对撞机等)
我为此苦苦挣扎了几个小时,但我不知道可能出了什么问题。
感谢您的帮助。
【问题讨论】:
【参考方案1】:您所说的“触摸输入控制器”是什么,它是一种触摸设备吗?如果是这样,你确定Input.GetAxis("Horizontal”)
在触摸设备上做了什么吗?它不会总是返回 0 吗?
您是否尝试过记录您的 move
值,或者将其复制到公共变量中以观察它在检查器中的演变?也许一个控制器和另一个控制器之间的值相差几个数量级,在这种情况下,您需要一个乘数。
【讨论】:
“触摸输入控制器”是我用于移动设备的角色控制器的一部分。在那种情况下,我不使用“Input.GetAxis(“Horizontal”),我只是在玩家按下步行按钮时将“移动”值设置为 1 或 -1。这就是错误。我将移动设置为 0没有按下步行按钮。这就是为什么角色即使站在移动平台上也不会移动的原因。我解决了这个问题,将“platform.rigidbody2D.velocity”添加到“character.velocity”。现在它工作正常。真的有助于记录“移动的价值。谢谢以上是关于Unity - 2D 移动平台育儿的主要内容,如果未能解决你的问题,请参考以下文章
100个 Unity实用技能| 游戏中获取鼠标点击的坐标,并将游戏对象移动到鼠标的点击位置