void Update() { if (!Input.GetMouseButtonDown(0)) { return; } var results = new CubismRaycastHit[4]; var ray = Camera.main.ScreenPointToRay(Input.mousePosition); var hitCount = raycaster.Raycast(ray, results); for (int i = 0; i < hitCount; i++) { string hitID = results[i].Drawable.name; Debug.Log("クリックしたアートメッシュIDは" + hitID + "です。"); if (hitID == "HitAreaBody") { anim.SetTrigger("touchBody"); } if (hitID == "HitAreaHead") { anim.SetTrigger("touchHead"); } } }
private void Update() { // Return early in case of no user interaction. if (!Input.GetMouseButtonDown(0)) { return; } var raycaster = GetComponent <CubismRaycaster>(); // Get up to 4 results of collision detection. var results = new CubismRaycastHit[4]; // Cast ray from pointer position. var ray = Camera.main.ScreenPointToRay(Input.mousePosition); var hitCount = raycaster.Raycast(ray, results); // Show results. var resultsText = hitCount.ToString(); for (var i = 0; i < hitCount; i++) { resultsText += "\n" + results[i].Drawable.name; PlayAnimation(results[i].Drawable.name); // 追加 } Debug.Log(resultsText); }
protected override void Raycast(Ray ray) { var hit = new CubismRaycastHit[4]; var hitCount = raycaster.Raycast(ray, hit); for (var index = 0; index < hitCount; index++) { if (onRaycastHit != null) { onRaycastHit.OnNext(hit[index].Drawable); } } }
/// <summary> /// 当たり判定 /// </summary> void HitTest() { //当たり判定 4点まで許容 var results = new CubismRaycastHit[4]; //マウスポジションレイ取得 var ray = Camera.main.ScreenPointToRay(Input.mousePosition); //当たり判定チェック var hitCount = this.RayCaster.Raycast(ray, results); //あたってなければ抜ける if (hitCount < 1) { return; } //当たり判定結果 int hitTestResult = 0; //判定結果を走査 foreach (CubismRaycastHit result in results) { if (result.Drawable == null) { continue; } if (result.Drawable.name == "D_REF_OPPAI") { hitTestResult = 2; break; } else if (result.Drawable.name == "D_REF_BODY") { hitTestResult = 3; //体は優先度低。続行 continue; } else if (result.Drawable.name == "D_REF_HEAD") { hitTestResult = 1; break; } } if (hitTestResult == 1) { //次の話題 CallbackOnNextTalkOrSkip(); } else if (hitTestResult == 2) { //恥じらいを発動 SetExpressionLocal(MOTION.MOTION_PROUD_M); } else if (hitTestResult == 3) { //次の話題 CallbackOnNextTalkOrSkip(); } }