【发布时间】:2017-08-28 01:31:03
【问题描述】:
我有一个玩家控制的平台。当移动到外边缘时,平台开始移动。外部触发器的宽度由代码计算。
所以玩家可以向任何方向移动,他只需要靠近边缘即可触发移动。
玩家连接了刚体,也连接了平台。这是我使用的平台检查员的图像
这是附上的代码
[SerializeField]
private float speed; // the movementSpeed
[SerializeField]
private float movementTriggerWidth; // width of the triggers at the outer edges
private Vector3 movementDirection = Vector3.zero;
private Rigidbody platformRigid;
private GameObject player;
private float triggerDistance; // distance from center to a trigger
private void Start()
{
player = Globals.GetPlayerObject(); // search for the player Object in the scene
platformRigid = GetComponent<Rigidbody>();
triggerDistance = transform.localScale.x / 2 - movementTriggerWidth; // set the trigger distance
}
private void OnTriggerEnter(Collider col)
{
col.transform.parent = transform; // set the player as a child of the platform
}
private void OnTriggerExit(Collider col)
{
col.transform.parent = null; // leave the platform
}
private void OnTriggerStay(Collider col)
{
if (col.gameObject == player) // only the player can move the platform
{
Vector3 playerPosition = player.transform.position;
Vector3 platformPosition = transform.position;
if (Vector3.Distance(playerPosition, platformPosition) > triggerDistance) // player is in outer trigger?
{
movementDirection = playerPosition - platformPosition; // calculate the movement direction
platformRigid.MovePosition(transform.position + movementDirection * speed * Time.deltaTime); // move the platform
}
}
}
现在的问题:
在平台上跳跃时,玩家成为平台的孩子。但是当平台开始移动时,玩家不受此影响。他不会被平台感动。
我希望有人可以帮助我解决这个“小”(?)错误。
更新:
这是播放器检查器的图片
【问题讨论】:
-
啊,好吧,所以我的平台必须不是运动的。但是当在非运动平台上跳跃时,它就会掉下来。即使“使用重力”停用。
-
可以分享一下玩家检查员的图片吗?
-
@ZayedUpal 我更新了我的帖子,但正如上面提到的 Fiffe,我需要切换运动状态。
-
那么如何在不处于运动状态的情况下实现运动行为?