/** * シュート */ private void OnScreenShot(Player.ColorType colorType, Vector3 position) { // シュート音再生 AudioSource audioSource = GetComponent <AudioSource>(); audioSource.PlayOneShot(SE_Shoot); // シュートしたプレイヤーのエントリー gameDirector.PlayerEntry(colorType); // カウントダウン開始していなければ if (Timer.gameObject.activeSelf == false) { // タイトル非表示 TitleArea.SetActive(false); // タイマーON Timer.gameObject.SetActive(true); } var index = (int)colorType; Ray ray = Camera.main.ScreenPointToRay(Camera.main.WorldToScreenPoint(position)); //Ray ray = new Ray(position, Camera.main.transform.forward); RaycastHit hit = new RaycastHit(); if (Physics.Raycast(ray, out hit)) { InkSplashShaderBehavior script = hit.collider.gameObject.GetComponent <InkSplashShaderBehavior>(); if (null != script) { script.PaintOn(hit.textureCoord, SplashImages[index]); } } }
/** * */ public Player GetPlayer(Player.ColorType type) { if (players == null) { players = new Player[0]; } return(players.Where(player => player.Color == type).FirstOrDefault()); }
private bool IsAreaTarget(Player.ColorType color, Vector2 current) { var index = (int)color; var target = this.targets[index]; return(target.x - area < current.x && current.x < target.x + area && target.y - area < current.y && current.y < target.y + area); }
/** * スコア加算 */ public void AddScore(Player.ColorType colorType) { Player player = players.Where(p => p.Color == colorType).Single(); if (player != null) { player.Score += pointUnit; } }
private Tracker.DeviceType ConvertDeviceType(Player.ColorType colorType) { switch (colorType) { case (Player.ColorType.Pink): return(Tracker.DeviceType.PinkTracker); //case (Tracker.DeviceType.PurpleTracker): //case (Tracker.DeviceType.LeftController): case (Player.ColorType.Green): return(Tracker.DeviceType.GreenTracker); case (Player.ColorType.Purple): default: return(Tracker.DeviceType.PurpleTracker); } }
/** * スクリーンシュート */ private void OnScreenShot(Player.ColorType colorType, Vector3 position) { var index = (int)colorType; AudioSource audioSource = GetComponent <AudioSource>(); audioSource.PlayOneShot(SE_Shot); Ray ray = Camera.main.ScreenPointToRay(Camera.main.WorldToScreenPoint(position)); RaycastHit hit = new RaycastHit(); if (Physics.Raycast(ray, out hit, scopeRange, InkedRayrMask)) { // 敵にヒット InkSplashShaderBehavior script = hit.collider.gameObject.GetComponent <InkSplashShaderBehavior>(); if (null != script && canCount) { script.PaintOn(hit.textureCoord, SplashImages[index]); SpScene3People hitscript = hit.collider.gameObject.GetComponentInParent <SpScene3People>(); HitpointHandler hitpointHandler = hit.collider.gameObject.GetComponentInParent <HitpointHandler>(); if (hitscript != null) { if (hitpointHandler != null) { hitpointHandler.Hit(); if (hitpointHandler.isDie()) { hitscript.DieOn(); } } else { hitscript.DieOn(); } } string hitTag = hit.collider.tag; gameDirector.AddScore(colorType); int score = gameDirector.GetScore(colorType); Scores[index].text = String.Format("{0}", score); } } }
/** * スクリーンのHover情報 */ private void OnScreenPosition(Player.ColorType colorType, Vector3 position) { int index = (int)colorType; if (isTargetsFind[index]) { return; } // Light移動 SpotLights[index].transform.position = position; var screenPoint = Camera.main.WorldToScreenPoint(position); if (IsAreaTarget(colorType, screenPoint)) { var pos = new Vector3(position.x, position.y, position.z); //TargetObject[index].transform.position = pos; //TargetObject[index].transform.Translate(Camera.main.transform.forward * 10); isTargetsFind[index] = true; gameDirector.TriggerViveTracker(colorType); bool findBoss = true; foreach (bool find in isTargetsFind) { if (!find) { findBoss = false; break; } } if (findBoss) { this.OnFindBoss(); } } }
// デバッグ用 private void OnListenScreenPosition(Player.ColorType colorType, Vector3 positon) { Debug.Log(positon); }
/** * スコア取得 */ public int GetScore(Player.ColorType colorType) { Player player = players.Where(p => p.Color == colorType).Single(); return(player.Score); }
/** * エントリー処理 */ public void PlayerEntry(Player.ColorType colorType) { var player = this.GetPlayer(colorType); player.IsEntry = true; }
/** * tracker vive */ public void TriggerViveTracker(Player.ColorType colorType) { trackerViverationEvent.Invoke(ConvertDeviceType(colorType)); }
public void ShotScreen(Player.ColorType colorType, Vector3 position) { screenTriggerEvent.Invoke(colorType, position); }
public void HoverScreen(Player.ColorType colorType, Vector3 position) { screenPositionEvent.Invoke(colorType, position); }
/** * スクリーンホバー */ private void OnScreenPosition(Player.ColorType colorType, Vector3 position) { Debug.Log(position); Scopes[(int)colorType].transform.position = Camera.main.WorldToScreenPoint(position); }
/** * シュート */ private void OnScreenShot(Player.ColorType colorType, Vector3 position) { // // OnFindBoss(); }