/**
     * シュート
     */
    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]);
            }
        }
    }
Example #2
0
 /**
  *
  */
 public Player GetPlayer(Player.ColorType type)
 {
     if (players == null)
     {
         players = new Player[0];
     }
     return(players.Where(player => player.Color == type).FirstOrDefault());
 }
Example #3
0
    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);
    }
Example #4
0
    /**
     * スコア加算
     */
    public void AddScore(Player.ColorType colorType)
    {
        Player player = players.Where(p => p.Color == colorType).Single();

        if (player != null)
        {
            player.Score += pointUnit;
        }
    }
Example #5
0
    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);
        }
    }
Example #6
0
    /**
     * スクリーンシュート
     */
    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);
            }
        }
    }
Example #7
0
    /**
     * スクリーンの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();
            }
        }
    }
Example #8
0
 // デバッグ用
 private void OnListenScreenPosition(Player.ColorType colorType, Vector3 positon)
 {
     Debug.Log(positon);
 }
Example #9
0
    /**
     * スコア取得
     */
    public int GetScore(Player.ColorType colorType)
    {
        Player player = players.Where(p => p.Color == colorType).Single();

        return(player.Score);
    }
Example #10
0
    /**
     * エントリー処理
     */
    public void PlayerEntry(Player.ColorType colorType)
    {
        var player = this.GetPlayer(colorType);

        player.IsEntry = true;
    }
Example #11
0
 /**
  * tracker vive
  */
 public void TriggerViveTracker(Player.ColorType colorType)
 {
     trackerViverationEvent.Invoke(ConvertDeviceType(colorType));
 }
Example #12
0
 public void ShotScreen(Player.ColorType colorType, Vector3 position)
 {
     screenTriggerEvent.Invoke(colorType, position);
 }
Example #13
0
 public void HoverScreen(Player.ColorType colorType, Vector3 position)
 {
     screenPositionEvent.Invoke(colorType, position);
 }
Example #14
0
 /**
  * スクリーンホバー
  */
 private void OnScreenPosition(Player.ColorType colorType, Vector3 position)
 {
     Debug.Log(position);
     Scopes[(int)colorType].transform.position = Camera.main.WorldToScreenPoint(position);
 }
Example #15
0
 /**
  * シュート
  */
 private void OnScreenShot(Player.ColorType colorType, Vector3 position)
 {
     //
     // OnFindBoss();
 }