void OnTriggerEnter2D(Collider2D colision){ if (colision.gameObject.tag == "Player") { GameManager.hasWin = true; SoundSingleton.Singleton.PlayKey(); Destroy(this.gameObject); keyPhase = KeyPhase.END; } }
void Update () { if (keyPhase != KeyPhase.END) { if (keyPhase == KeyPhase.JUMP) { rigidbody.velocity = new Vector2(0.0f, 0.0f); rigidbody.AddForce(new Vector2(-(jumpForce/10), +force * 0.9f), ForceMode2D.Impulse); keyPhase = KeyPhase.NONE; } } }
protected virtual void Update() { KeyPhase mask = GetPhaseMask(); if (mask.HasFlag(phase)) { onTrigger?.Invoke(); } #region LOCAL_FUNCTIONS KeyPhase GetPhaseMask() { var p = KeyPhase.None; p |= Input.GetKeyDown(keyCode) ? KeyPhase.Down : KeyPhase.None; p |= Input.GetKeyUp(keyCode) ? KeyPhase.Up : KeyPhase.None; p |= Input.GetKey(keyCode) ? KeyPhase.Pressed : KeyPhase.Unpressed; return(p); } #endregion }
public void DownKey(float speed){ keyPhase = KeyPhase.JUMP; force = jumpForce+(speed/10); }
void Start () { rigidbody = this.GetComponent<Rigidbody2D> (); keyPhase = KeyPhase.NONE; }
protected bool TryProcessAxisValue(GamePadKey key, KeyPhase phase) { string axisName = string.Empty; bool isPositiveValue = true; switch (key) { case GamePadKey.D_UP: axisName = axisNames.DPadY; isPositiveValue = true; break; case GamePadKey.D_DOWN: axisName = axisNames.DPadY; isPositiveValue = false; break; case GamePadKey.D_LEFT: axisName = axisNames.DPadX; isPositiveValue = false; break; case GamePadKey.D_RIGHT: axisName = axisNames.DPadX; isPositiveValue = true; break; case GamePadKey.LT: axisName = axisNames.LTrigger; isPositiveValue = true; break; case GamePadKey.RT: axisName = axisNames.RTrigger; isPositiveValue = true; break; case GamePadKey.ANALOG_L_UP: axisName = axisNames.LeftAnalogStickY; isPositiveValue = true; break; case GamePadKey.ANALOG_L_DOWN: axisName = axisNames.LeftAnalogStickY; isPositiveValue = false; break; case GamePadKey.ANALOG_L_LEFT: axisName = axisNames.LeftAnalogStickX; isPositiveValue = false; break; case GamePadKey.ANALOG_L_RIGHT: axisName = axisNames.LeftAnalogStickX; isPositiveValue = true; break; case GamePadKey.ANALOG_R_UP: axisName = axisNames.RightAnalogStickY; isPositiveValue = true; break; case GamePadKey.ANALOG_R_DOWN: axisName = axisNames.RightAnalogStickY; isPositiveValue = false; break; case GamePadKey.ANALOG_R_LEFT: axisName = axisNames.RightAnalogStickX; isPositiveValue = false; break; case GamePadKey.ANALOG_R_RIGHT: axisName = axisNames.RightAnalogStickX; isPositiveValue = true; break; } if (string.IsNullOrEmpty(axisName)) { return(false); } else if (!axisValueDict.ContainsKey(axisName)) { return(false); } if (phase == KeyPhase.RELEASE) { return(axisValueDict[axisName].Released(isPositiveValue)); } else if (phase == KeyPhase.PRESS) { return(axisValueDict[axisName].Press(isPositiveValue)); } else if (phase == KeyPhase.PRESSED) { return(axisValueDict[axisName].IsPressing(isPositiveValue)); } return(false); }