思路就是发射射线,检测到物体的时候挂上一个springjoint组件,然后用linerenderer渲染joint两点之间连线。
用到的参数可能是这些(由于略微久远不记得有哪些细节参数)
//Hook
SpringJoint spring;
new public Camera camera;
//抓钩的绳子
LineRenderer lr;
//抓住的地点
Vector3 GrapPoint;
public Transform HookPoint;
public bool IsHook = false;
public float hookdistance = 10f;
public float Hookspring = 5f;
主要的抓钩代码:在update里面调用就行了。
void Hook() {
RaycastHit hit;
//发射射线
Physics.Raycast(HookPoint.position, camera.transform.forward, out hit,hookdistance);
//判断IShook:有没有勾中,确保一次只能发射一条抓钩
if (Input.GetKeyDown(KeyCode.E) && !IsHook && hit.point != new Vector3(0, 0, 0))
{
IsHook = true;
//添加springjoint组件
spring = gameObject.AddComponent<SpringJoint>();
//自动