public static void subscribeMoveUpdate(MoveUpdateCallback updateCallback, MoveKeyCallback keyDownCallback, MoveKeyCallback keyUpCallback, NavUpdateCallback navCallback, MoveKeyCallback navKeyDown, MoveKeyCallback navKeyUp) { MoveWrapper.updateCallback = updateCallback; MoveWrapper.keyDownCallback = keyDownCallback; MoveWrapper.keyUpCallback = keyUpCallback; MoveWrapper.navUpdateCallback = navCallback; MoveWrapper.navKeyDownCallback = navKeyDown; MoveWrapper.navKeyUpCallback = navKeyUp; subscribeMove(updateCallback, keyDownCallback, keyUpCallback, navCallback, navKeyDown, navKeyUp); }
public void MoveUpdate(Transform tran, Vector3 destPos, float moveSpeed, MoveUpdateCallback callback) { float dist = Vector3.Distance(tran.position, destPos); if (dist > 0f) { Vector3 dir = destPos - tran.position; dir.Normalize(); Quaternion toRotation = Quaternion.LookRotation(dir); tran.rotation = toRotation; float mttime = dist / moveSpeed; float mtime = 0f; AddEvent(delegate { turnTarget(); mtime += Time.deltaTime; if (mtime >= mttime) { tran.position = destPos; callback(); return true; } else { float md = Time.deltaTime * moveSpeed; tran.position += dir * md; } return callback(); }); } else { callback(); } }
private static extern void subscribeMove(MoveUpdateCallback updateCallback, MoveKeyCallback keyDownCallback, MoveKeyCallback keyUpCallback, NavUpdateCallback navCallback, MoveKeyCallback navKeyDown, MoveKeyCallback navKeyUp);