如何实现立方体撞墙后从角落反弹至对角并保持平面直线运动?
需求与实现尝试
我需要实现以下效果:
- 立方体沿随机方向自动移动,用彩色标记点标记其角落
- 立方体与墙体碰撞后,从碰撞角落反弹至对角,在X-Y平面保持直线运动(行为类似Pong游戏)
- 立方体可旋转,以实现角落碰撞
已尝试的实现方式:
- 使用
LookAt函数并沿目标方向施加力 - 从与墙体碰撞的立方体角落向对角发射射线,尝试通过
MoveTowards函数向目标点移动
反弹代码片段
片段1
public class CollideCheck : MonoBehaviour { private bool isCollided; private int direction; public bool IsCollided { get { return isCollided; } } public GameObject YellowMarker { get; private set; } void OnCollisionEnter(Collider other) { if (other.gameObject.tag == "RedMarker") { void RaycastTowardsThing(GameObject other) { Vector3 raycastDir = other.transform.position - transform.position; Physics.Raycast(transform.position, raycastDir); } RaycastTowardsThing(YellowMarker); } } }
片段2
private void OnCollisionEnter(Collider other) { transform.position = Vector3.MoveTowards(transform.position, yellow.transform.position) }
目标效果示意图

内容的提问来源于stack exchange,提问作者stratutrav
相关产品推荐
相关产品推荐

