void CheckButtonMove(RaycastHit hit,int i) { if(hit.collider.gameObject == sprButtonA.gameObject){ buttonA = zFOXVPAD_BUTTON.HOLD; buttonAindex = i; buttonAHit = true; }else if(hit.collider.gameObject == sprButtonB.gameObject){ buttonB = zFOXVPAD_BUTTON.HOLD; buttonBindex = i; buttonBHit = true; } }
void CheckButtonNon() { if (!buttonAHit) { buttonA = zFOXVPAD_BUTTON.NON; buttonAindex = -1; sprButtonA.color = new Color(1.0f,1.0f,1.0f); } if (!buttonBHit) { buttonB = zFOXVPAD_BUTTON.NON; buttonBindex = -1; sprButtonB.color = new Color(1.0f,1.0f,1.0f); } }
void CheckButtonUp(RaycastHit hit,int i) { //Debug.Log (">>> Hit Up :" + hit.collider.gameObject); if (hit.collider.gameObject == sprButtonA.gameObject) { buttonA = zFOXVPAD_BUTTON.UP; buttonAindex = i; sprButtonA.color = new Color(1.0f,1.0f,1.0f); } else if (hit.collider.gameObject == sprButtonB.gameObject) { buttonB = zFOXVPAD_BUTTON.UP; buttonBindex = i; sprButtonB.color = new Color(1.0f,1.0f,1.0f); } }
void CheckButtonMove(RaycastHit hit,int i) { //Debug.Log (">>> Hit Hold :" + hit.collider.gameObject); if (hit.collider.gameObject == sprButtonA.gameObject) { buttonA = zFOXVPAD_BUTTON.HOLD; buttonAindex = i; buttonAHit = true; } else if (hit.collider.gameObject == sprButtonB.gameObject) { buttonB = zFOXVPAD_BUTTON.HOLD; buttonBindex = i; buttonBHit = true; } }
void CheckButtonDown(RaycastHit hit,int i) { if(hit.collider.gameObject == sprButtonA.gameObject){ buttonA = zFOXVPAD_BUTTON.DOWN; buttonAindex = i; buttonAHit = true; sprButtonA.color = new Color(1.0f,0.0f,0.0f); }else if(hit.collider.gameObject == sprButtonB.gameObject){ buttonB = zFOXVPAD_BUTTON.DOWN; buttonBindex = i; buttonBHit = true; sprButtonB.color = new Color(1.0f,0.0f,0.0f); } }
// === コード(ボタン処理の実装) =========================== void CheckButtonDown(RaycastHit hit,int i) { //Debug.Log (">>> Hit Down :" + hit.collider.gameObject); if (hit.collider.gameObject == sprButtonA.gameObject) { buttonA = zFOXVPAD_BUTTON.DOWN; buttonAindex = i; buttonAHit = true; sprButtonA.color = new Color(1.0f,0.0f,0.0f); } else if (hit.collider.gameObject == sprButtonB.gameObject) { buttonB = zFOXVPAD_BUTTON.DOWN; buttonBindex = i; buttonBHit = true; sprButtonB.color = new Color(1.0f,0.0f,0.0f); } }
void Update () { // オートレイアウト if (autoLayoutUpdate) { RunAutoLayout (); } // ------------------------------------ // --- Button ------------------------- if (buttonA == zFOXVPAD_BUTTON.UP) { buttonA = zFOXVPAD_BUTTON.NON; buttonAindex = -1; } if (buttonB == zFOXVPAD_BUTTON.UP) { buttonB = zFOXVPAD_BUTTON.NON; buttonBindex = -1; } buttonAHit = false; buttonBHit = false; if (Input.touchCount > 0) { // タッチチェック bool objectTouched = false; for(int i = 0;i < Input.touchCount;i ++) { Ray ray = uicam.ScreenPointToRay (Input.GetTouch (i).position); RaycastHit hit; // GUIレイヤをマスク // int gui = 1 << LayerMask.NameToLayer("GUI"); // if (Physics.Raycast(ray, Mathf.Infinity, gui)) { if (Physics.Raycast (ray, out hit, Mathf.Infinity)) { // タッチチェック TouchPhase tp = Input.GetTouch(i).phase; if (tp == TouchPhase.Began) { CheckButtonDown(hit,i); objectTouched = true; } else if (tp == TouchPhase.Moved || tp == TouchPhase.Stationary) { CheckButtonMove(hit,i); objectTouched = true; } else if (tp == TouchPhase.Ended || tp == TouchPhase.Canceled ) { CheckButtonUp(hit,i); objectTouched = true; } } } if (!objectTouched) { CheckButtonNon(); } } else { // マウスチェック Ray ray = uicam.ScreenPointToRay (Input.mousePosition); RaycastHit hit; // GUIレイヤをマスク // int gui = 1 << LayerMask.NameToLayer("GUI"); // if (Physics.Raycast(ray, Mathf.Infinity, gui)) { if (Physics.Raycast (ray, out hit, Mathf.Infinity)) { if (Input.GetMouseButtonDown (0)) { CheckButtonDown(hit,0); } else if (Input.GetMouseButton (0)) { CheckButtonMove(hit,0); } else if (Input.GetMouseButtonUp (0)) { CheckButtonUp(hit,0); } else { CheckButtonNon(); } } else { CheckButtonNon(); } } // ------------------------------------ // --- SlidePad ----------------------- movEnable = false; if (Input.touchCount > 0) { // タッチチェック for(int i = 0;i < Input.touchCount;i ++) { if (i != buttonAindex && i != buttonBindex) { TouchPhase tp = Input.GetTouch(i).phase; if (tp == TouchPhase.Began) { if (CheckSlidePadDown(Input.GetTouch(i).position)) { break; } } else if (tp == TouchPhase.Moved || tp == TouchPhase.Stationary) { if (CheckSlidePadMove(Input.GetTouch(i).position)) { break; } } else if (tp == TouchPhase.Ended || tp == TouchPhase.Canceled ) { CheckSlidePadUp(); } } } } else { // マウスチェック if (Input.GetMouseButtonDown(0)) { if (Input.mousePosition.x / Screen.width < 0.5f) { CheckSlidePadDown((Vector2)Input.mousePosition); } } else if (Input.GetMouseButton(0)) { CheckSlidePadMove((Vector2)Input.mousePosition); } else if (Input.GetMouseButtonUp(0)) { CheckSlidePadUp(); } } if (movEnable == false) { movPadEnable = false; mov = Vector2.zero; } // 移動量計算 switch (padValMode) { case zFOXVPAD_SLIDEPADVALUEMODE.PAD_XY_SCREEN_WH: horizontal = mov.x * padSensitive / Screen.width; vertical = mov.y * padSensitive / Screen.height; break; case zFOXVPAD_SLIDEPADVALUEMODE.PAD_XY_SCREEN_WW: horizontal = mov.x * padSensitive / Screen.width; vertical = mov.y * padSensitive / Screen.width; break; case zFOXVPAD_SLIDEPADVALUEMODE.PAD_XY_SCREEN_HH: horizontal = mov.x * padSensitive / Screen.height; vertical = mov.y * padSensitive / Screen.height; break; } if (horizontal < -1.0f) horizontal = -1.0f; if (horizontal > 1.0f) horizontal = 1.0f; if (vertical < -1.0f) vertical = -1.0f; if (vertical > 1.0f) vertical = 1.0f; //Debug.Log (string.Format(">>> horizontal : {0},{1}",horizontal,Mathf.Abs (horizontal)) ); if (Mathf.Abs (horizontal) < horizontalStartVal) { horizontal = 0.0f; } if (Mathf.Abs (vertical) < verticalStartVal) { vertical = 0.0f; } // パッドの移動 Vector3 pos = new Vector3 (horizontal / (padSensitive / 2.0f), vertical / (padSensitive / 2.0f), 0.0f); sprSlidePad.transform.localPosition = pos; }
void Update() { if (!playerCtrl.activeSts) { return; } // バーチャルパッド float vpad_vertical = 0.0f; float vpad_horizontal = 0.0f; zFOXVPAD_BUTTON vpad_btnA = zFOXVPAD_BUTTON.NON; zFOXVPAD_BUTTON vpad_btnB = zFOXVPAD_BUTTON.NON; if (vpad != null) { vpad_vertical = vpad.vertical; vpad_horizontal = vpad.horizontal; vpad_btnA = vpad.buttonA; vpad_btnB = vpad.buttonB; } // 移動 float joyMv = Input.GetAxis("Horizontal"); // joyMv = Mathf.Pow(Mathf.Abs(joyMv),3.0f) * Mathf.Sign(joyMv); float vpadMv = vpad_horizontal; vpadMv = Mathf.Pow(Mathf.Abs(vpadMv), 1.5f) * Mathf.Sign(vpadMv); playerCtrl.ActionMove(joyMv + vpadMv); // ジャンプ if (Input.GetButtonDown("Jump") || vpad_btnA == zFOXVPAD_BUTTON.DOWN) { playerCtrl.ActionJump(); return; } // 攻撃 if (Input.GetButtonDown("Fire1") || Input.GetButtonDown("Fire2") || Input.GetButtonDown("Fire3") || vpad_btnB == zFOXVPAD_BUTTON.DOWN) { if (Input.GetAxisRaw("Vertical") + vpad_vertical < 0.5f) { playerCtrl.ActionAttack(); } else { //Debug.Log (string.Format ("Vertical {0} {1}",Input.GetAxisRaw ("Vertical"),vp.vertical)); playerCtrl.ActionAttackJump(); } return; } // ドアを開けたり通路に入る if (Input.GetAxisRaw("Vertical") + vpad_vertical > 0.7f) { if (actionEtcRun) { playerCtrl.ActionEtc(); actionEtcRun = false; } } else { actionEtcRun = true; } }
void CheckButtonNon() { if(!buttonAHit){ buttonA = zFOXVPAD_BUTTON.NON; buttonAindex= -1; sprButtonA.color = new Color(1.0f,1.0f,1.0f); } if(!buttonBHit){ buttonB = zFOXVPAD_BUTTON.NON; buttonBindex= -1; sprButtonB.color = new Color(1.0f,1.0f,1.0f); } }
// Update is called once per frame void Update() { if(autoLayoutUpdate){ RunAutoLayout(); } if(buttonA == zFOXVPAD_BUTTON.UP){ buttonA = zFOXVPAD_BUTTON.NON; buttonAindex = -1; } if(buttonB == zFOXVPAD_BUTTON.UP){ buttonB = zFOXVPAD_BUTTON.NON; buttonBindex = -1; } buttonAHit = false; buttonBHit = false; if(Input.touchCount > 0){ bool objectTouched = false; for(int i=0;i<Input.touchCount;i++){ Ray ray = uicam.ScreenPointToRay(Input.GetTouch(i).position); RaycastHit hit; if(Physics.Raycast(ray,out hit, Mathf.Infinity)){ TouchPhase tp = Input.GetTouch(i).phase; if(tp == TouchPhase.Began){ CheckButtonDown(hit,i); objectTouched =true; }else if(tp == TouchPhase.Moved || tp == TouchPhase.Stationary){ CheckButtonMove(hit,i); objectTouched =true; }else if(tp == TouchPhase.Ended || tp == TouchPhase.Canceled){ CheckButtonUp(hit,i); objectTouched =true; } } } if(!objectTouched){ CheckButtonNon(); } }else{ Ray ray = uicam.ScreenPointToRay(Input.mousePosition); RaycastHit hit; if(Physics.Raycast(ray,out hit,Mathf.Infinity)){ if(Input.GetMouseButtonDown(0)){ CheckButtonDown(hit,0); }else if(Input.GetMouseButton(0)){ CheckButtonMove(hit,0); }else if(Input.GetMouseButtonUp(0)){ CheckButtonUp(hit,0); }else{ CheckButtonNon(); } }else{ CheckButtonNon(); } } movEnable = false; if(Input.touchCount > 0){ for(int i=0;i<Input.touchCount;i++){ if(i != buttonAindex && i !=buttonBindex){ TouchPhase tp = Input.GetTouch(i).phase; if(tp == TouchPhase.Began){ if(CheckSlidePadDown(Input.GetTouch(i).position)){ break; } }else if(tp == TouchPhase.Moved || tp == TouchPhase.Stationary){ if(CheckSlidePadMove(Input.GetTouch(i).position)){ break; } }else if(tp == TouchPhase.Ended || tp == TouchPhase.Canceled){ CheckSlidePadUp(); } } } }else{ if(Input.GetMouseButtonDown(0)){ if(Input.mousePosition.x / Screen.width <0.5f){ CheckSlidePadDown((Vector2)Input.mousePosition); } }else if(Input.GetMouseButton(0)){ CheckSlidePadMove((Vector2)Input.mousePosition); }else if(Input.GetMouseButtonUp(0)){ CheckSlidePadUp(); } } if(movEnable == false){ movPadEnable = false; mov = Vector2.zero; } switch(padValMode){ case zFOXVPAD_SLIDEPADVALUEMODE.PAD_XY_SCREEN_WH: horizontal = mov.x * padSensitive / Screen.width; vertical = mov.y*padSensitive /Screen.height; break; case zFOXVPAD_SLIDEPADVALUEMODE.PAD_XY_SCREEN_WW: horizontal = mov.x * padSensitive / Screen.width; vertical = mov.y*padSensitive /Screen.width; break; case zFOXVPAD_SLIDEPADVALUEMODE.PAD_XY_SCREEN_HH: horizontal = mov.x * padSensitive / Screen.height; vertical = mov.y*padSensitive /Screen.height; break; } if(horizontal < -1.0f) horizontal = -1.0f; if(horizontal > 1.0f) horizontal = 1.0f; if(vertical < -1.0f) vertical = -1.0f; if(vertical > 1.0f) vertical = 1.0f; if(Mathf.Abs(horizontal) < horizontalStartVal){ horizontal = 0.0f; } if(Mathf.Abs(vertical) <verticalStartVal){ vertical = 0.0f; } Vector3 pos = new Vector3(horizontal/(padSensitive/2.0f),vertical/(padSensitive/2.0f),0.0f); sprSlidePad.transform.localPosition = pos; }
void CheckButtonUp(RaycastHit hit,int i) { if(hit.collider.gameObject == sprButtonA.gameObject){ buttonA = zFOXVPAD_BUTTON.UP; buttonAindex = i; sprButtonA.color = new Color(1.0f,1.0f,1.0f); }else if(hit.collider.gameObject == sprButtonB.gameObject){ buttonB = zFOXVPAD_BUTTON.UP; buttonBindex = i; sprButtonB.color = new Color(1.0f,1.0f,1.0f); } }
void Update () { // 자동 레이아웃 if (autoLayoutUpdate) { RunAutoLayout (); } // ------------------------------------ // --- Button ------------------------- if (buttonA == zFOXVPAD_BUTTON.UP) { buttonA = zFOXVPAD_BUTTON.NON; buttonAindex = -1; } if (buttonB == zFOXVPAD_BUTTON.UP) { buttonB = zFOXVPAD_BUTTON.NON; buttonBindex = -1; } buttonAHit = false; buttonBHit = false; if (Input.touchCount > 0) { // 터치 검사 bool objectTouched = false; for(int i = 0;i < Input.touchCount;i ++) { Ray ray = uicam.ScreenPointToRay (Input.GetTouch (i).position); RaycastHit hit; // GUI 레이어를 마스크 처리한다 // int gui = 1 << LayerMask.NameToLayer("GUI"); // if (Physics.Raycast(ray, Mathf.Infinity, gui)) { if (Physics.Raycast (ray, out hit, Mathf.Infinity)) { // 터치 검사 TouchPhase tp = Input.GetTouch(i).phase; if (tp == TouchPhase.Began) { CheckButtonDown(hit,i); objectTouched = true; } else if (tp == TouchPhase.Moved || tp == TouchPhase.Stationary) { CheckButtonMove(hit,i); objectTouched = true; } else if (tp == TouchPhase.Ended || tp == TouchPhase.Canceled ) { CheckButtonUp(hit,i); objectTouched = true; } } } if (!objectTouched) { CheckButtonNon(); } } else { // 마우스 검사 Ray ray = uicam.ScreenPointToRay (Input.mousePosition); RaycastHit hit; // GUI 레이어를 마스크한다 // int gui = 1 << LayerMask.NameToLayer("GUI"); // if (Physics.Raycast(ray, Mathf.Infinity, gui)) { if (Physics.Raycast (ray, out hit, Mathf.Infinity)) { if (Input.GetMouseButtonDown (0)) { CheckButtonDown(hit,0); } else if (Input.GetMouseButton (0)) { CheckButtonMove(hit,0); } else if (Input.GetMouseButtonUp (0)) { CheckButtonUp(hit,0); } else { CheckButtonNon(); } } else { CheckButtonNon(); } } // ------------------------------------ // --- SlidePad ----------------------- movEnable = false; if (Input.touchCount > 0) { // 터치 검사 for(int i = 0;i < Input.touchCount;i ++) { if (i != buttonAindex && i != buttonBindex) { TouchPhase tp = Input.GetTouch(i).phase; if (tp == TouchPhase.Began) { if (CheckSlidePadDown(Input.GetTouch(i).position)) { break; } } else if (tp == TouchPhase.Moved || tp == TouchPhase.Stationary) { if (CheckSlidePadMove(Input.GetTouch(i).position)) { break; } } else if (tp == TouchPhase.Ended || tp == TouchPhase.Canceled ) { CheckSlidePadUp(); } } } } else { // 마우스 검사 if (Input.GetMouseButtonDown(0)) { if (Input.mousePosition.x / Screen.width < 0.5f) { CheckSlidePadDown((Vector2)Input.mousePosition); } } else if (Input.GetMouseButton(0)) { CheckSlidePadMove((Vector2)Input.mousePosition); } else if (Input.GetMouseButtonUp(0)) { CheckSlidePadUp(); } } if (movEnable == false) { movPadEnable = false; mov = Vector2.zero; } // 이동량 계산 switch (padValMode) { case zFOXVPAD_SLIDEPADVALUEMODE.PAD_XY_SCREEN_WH: horizontal = mov.x * padSensitive / Screen.width; vertical = mov.y * padSensitive / Screen.height; break; case zFOXVPAD_SLIDEPADVALUEMODE.PAD_XY_SCREEN_WW: horizontal = mov.x * padSensitive / Screen.width; vertical = mov.y * padSensitive / Screen.width; break; case zFOXVPAD_SLIDEPADVALUEMODE.PAD_XY_SCREEN_HH: horizontal = mov.x * padSensitive / Screen.height; vertical = mov.y * padSensitive / Screen.height; break; } if (horizontal < -1.0f) horizontal = -1.0f; if (horizontal > 1.0f) horizontal = 1.0f; if (vertical < -1.0f) vertical = -1.0f; if (vertical > 1.0f) vertical = 1.0f; //Debug.Log (string.Format(">>> horizontal : {0},{1}",horizontal,Mathf.Abs (horizontal)) ); if (Mathf.Abs (horizontal) < horizontalStartVal) { horizontal = 0.0f; } if (Mathf.Abs (vertical) < verticalStartVal) { vertical = 0.0f; } // 패드 이동 Vector3 pos = new Vector3 (horizontal / (padSensitive / 2.0f), vertical / (padSensitive / 2.0f), 0.0f); sprSlidePad.transform.localPosition = pos; }