public ForwawrdAndUnderRaycaster(ref PostureState posture, ref FigureInfo figure, _Action3Enemy act) { r = new UnderRaycaster(ref posture, ref figure, act); movedist = act.stance.moveSpeed * GM.t.delta; moveRadius = figure.moveRadius; forward = posture.rot * Vector3.forward; forwardOrigin = posture.isGotFoothold ? r.bodypos : r.bodypos - forward; }
protected void physStayOnWall() { var rc = new UnderRaycaster(ref posture, ref figure, this); var res = new RaycastHit(); if (rc.raycastUnder(out res)) { // 接地してた posture.rot = Quaternion.FromToRotation(rc.up, res.normal) * posture.rot; rb.MovePosition(res.point); } else { // 落下へ state.setPhysics(physFree); shiftToPhysicalMode(); } }