Unity - 遵循raycast2D的对象的无限速度

时间:2015-10-30 08:16:41

标签: unity3d path rotation raycasting

因此,即时创建一个简单的游戏,游戏的一个组成部分是跟随关卡外部的绿色。我使用中间的光线投影工作,旋转并给出游戏对象的碰撞位置。

game overview

问题在于速度是不一致的,因为如果我有斜率,两次碰撞之间的距离可以更远。我也觉得应该有一种更简单的方法来获得相同的结果。你有什么想法?

public class FollowPath : MonoBehaviour {
        Vector3 collisionPos;
        public GameObject greenDot;

        void Update ()
        {
            RaycastHit2D hit = Physics2D.Raycast(transform.position, transform.up);
            transform.Rotate(0.0f, 0.0f, 3);

            if (hit.collider != null)
            {
                collisionPos = hit.point;
            }

            greenDot.transform.position = collisionPos;
        }
    }

1 个答案:

答案 0 :(得分:0)

我不确定您是否会喜欢这个答案,因为它表明完全背离了您尝试这样做的方式。

一种简单的方法是将移动点GameObject作为Rigidbody2D组件和CircleCollider组件。

然后,制作墙壁,并为每个EdgeCollider组件添加。

您可能还希望使用Collider为每个GameObject添加PhysicsMaterial2d,并为每个GameObject设置摩擦力和弹跳值。

设置完成后,您可以对刚体球施加初始力以使其移动,并且它将像球一样从墙上反弹,使用Unity物理引擎。更新功能不需要代码。