单方向弹簧Spring Joint

来源:互联网 发布:linux系统编程手册pdf 编辑:程序博客网 时间:2024/04/30 12:29

最近要做个弹珠台的Demo,给小球添加力的时候,那个弹簧,想要用Spring Joint 来做。不过好蛋疼,弹出去的时候,弹簧顶总是飘到空中,这里写下后面的处理办法。


  • 新建两个Cube一个坐位弹簧顶,另外一个当做弹簧底。
  • 在底那里添加Spring Joint,给顶添加Rigidbody
  • 在顶部的RigidBody中勾选Freeze Position中的Y
    这里写图片描述

OK,搞定。最后一步就是限制对象不可以在Y轴上移动,防止他飘起来。
不过现在还有个好蛋疼的地方,就是弹簧会来回弹,无法做到弹回原来的位置就停止。虽然弹簧原来就该这个效果O。O
为了符合需求,我加入了下面的代码

    private float dis;    private bool springDown = true;    private Rigidbody rig;    void Start () {        dis = this.gameObject.transform.localPosition.z;        rig = this.gameObject.transform.GetComponent<Rigidbody> ();    }    void Update () {        if (Input.GetMouseButton (0)) {            if(rig.isKinematic){                rig.isKinematic = false;            }            rig.AddForce(new Vector3(0,0,100));        }else if(dis > this.gameObject.transform.localPosition.z){            rig.isKinematic = true;        }    }
0 0
原创粉丝点击