コード例 #1
0
 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;
     }
 }
コード例 #2
0
ファイル: zFoxVirtualPad.cs プロジェクト: z-n/006779
	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);
		}
	}
コード例 #3
0
ファイル: zFoxVirtualPad.cs プロジェクト: z-n/006779
	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);
		}
	}
コード例 #4
0
ファイル: zFoxVirtualPad.cs プロジェクト: z-n/006779
	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;
		}
	}
コード例 #5
0
 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);
     }
 }
コード例 #6
0
ファイル: zFoxVirtualPad.cs プロジェクト: z-n/006779
	// === コード(ボタン処理の実装) ===========================
	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);
		}
	}
コード例 #7
0
ファイル: zFoxVirtualPad.cs プロジェクト: z-n/006779
	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;
		
	}
コード例 #8
0
    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;
        }
    }
コード例 #9
0
 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);
     }
 }
コード例 #10
0
    // 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;
    }
コード例 #11
0
 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);
     }
 }
コード例 #12
0
	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;
		
	}