void SelectKey() { //Operater(コントローラー)と一番っ距離が近いキーを操作対象とする if (controllerInput.GetControllerTriggerDown(ControllerSide)) { float mindist = OperatableKeys.Min(x => Vector3.Distance(x.collider.transform.position, transform.position)); InOperationKey = OperatableKeys.First(x => Vector3.Distance(x.collider.transform.position, transform.position) == mindist); InOperationKey.FlickKey.OnFlickStart(this); InOperationKey.InOperation = true; } }
void ReleaseKey() { if (InOperationKey == null) { return; } if (controllerInput.GetControllerTriggerUp(ControllerSide)) { InOperationKey.FlickKey.OnFlickEnd(this); OperatableKeys.RemoveAll(key => key == InOperationKey); InOperationKey = null; } }
void OnTriggerStay(Collider collider) { IFlickKeyAction flickkey = collider.GetComponent <IFlickKeyAction>(); if (flickkey == null) { return; } if (!OperatableKeys.Any(key => key.collider == collider)) { Keyinfo info = new Keyinfo(); info.collider = collider; info.FlickKey = flickkey; info.InOperation = false; OperatableKeys.Add(info); } }