/// <summary> /// Mapがクリックされた時の処理 /// </summary> /// <param name="isPickup"></param> void MapAction(bool isPickup = false) { _mapView.SetMapText( _mapStringService.MakeMapString( (int)_playerModel.PlayerPositionVec3RP.Value.x, (int)_playerModel.PlayerPositionVec3RP.Value.z, isPickup )); if (isPickup) { _mapView.ChangeMapSize( _mapView.PickedMapPositionVec3, _mapView.PickedMapSizeVec2 ); } else { _mapView.ChangeMapSize( _mapView.MapPositionVec3, _mapView.MapSizeVec2, false ); } }
void Start() { PlayerInit(); _moveCameraButtonView.OnClick() .Subscribe(_ => { if (_mainCameraVeiw.OffsetPosition == _mainCameraVeiw.Offset1) { _mainCameraVeiw.Rotation(_mainCameraVeiw.Euler2, _mainCameraVeiw.Offset2); } else { _mainCameraVeiw.Rotation(_mainCameraVeiw.Euler1, _mainCameraVeiw.Offset1); } }); // button onclick register foreach (var _moveBtn in _moveButtonView) { _moveBtn.movebutton_OnUp() .Subscribe(_ => { _playerView.SetAnimation(0); }); _moveBtn.movebutton_OnDown() .SelectMany(_moveBtn.UpdateAsObservable()) .Where(_ => !_playerView.IsObjectMoving && !_dangeonFieldModel.IsFieldSetting) .TakeUntil(_moveBtn.movebutton_OnUp()) .RepeatUntilDestroy(_moveBtn.gameObject) .Subscribe(_ => { SetPlayerInputVec(_moveBtn.VectorX, _moveBtn.VectorY); _playerView.SetAnimation(1); }); } // PlayerInputVec3RPの変更によって呼び出すように登録する _playerModel.PlayerInputVec3RP .Subscribe( dvec3 => { _playerView.Move(dvec3); } ); // 移動時のキャラ絵の変更 _playerModel.DirectionPlayerRP .Subscribe( dir => _playerView.ChangeDirection(dir) ); // playerの位置が変わった時の処理 _playerModel.PlayerPositionVec3RP .Where(ppos => ppos != Vector3.zero) //&& !_dangeonFieldModel.IsFieldSettingRP.Value) .Subscribe( ppos => { // if (_dangeonFieldModel.Field[(int) ppos.x, (int) ppos.y] == (int) FieldClass.floor) // { // //todo // _playerview.CreateFovFloor (ppos); // } StartCheckWalkedTiles((int)ppos.x, (int)ppos.z); _mapView.SetMapText( _mapStringSevice.MakeMapString( (int)ppos.x, (int)ppos.z )); } ); // player postion get var tmpvec3 = new Vector3(); _playerView.UpdateAsObservable() //.Where(_ => !_playerView.IsObjectMoving) .Subscribe(_ => { _mainCameraVeiw.Move(_playerView.Position); // 移動中はプレイヤー位置の設定を行わない if (_playerView.IsObjectMoving) { return; } tmpvec3.Set( _playerView.Position.x, 0, _playerView.Position.z ); _playerModel.PlayerPositionVec3RP.Value = tmpvec3; }); _playerView.OnTriggerEnterAsObservable() .Select(collision => collision.gameObject) .Where(colobj => colobj.CompareTag("Item")) .Subscribe(colobj => { _playerModel.ItemList.Add( _dangeonFieldModel.Item[ ((int)colobj.transform.position.x), ((int)colobj.transform.position.z)] ); _dangeonFieldModel.Item[ ((int)colobj.transform.position.x), ((int)colobj.transform.position.z)] = ItemClass.none; GameObject.Destroy(colobj); _playerModel.ItemList.ForEach(i => Debug.Log(i)); Debug.Log("=================="); }); // unirxでの衝突時の処理の登録 unirx.triggersをusingする _playerView.OnTriggerStayAsObservable() .Select(collision => collision.gameObject) .Where(colobj => colobj.CompareTag("Stairs") && !_playerView.IsObjectMoving) .Subscribe(collision => { PlayerInit(); _dangeonFieldModel.FloorNumRP.Value++; }); // reload scene // SceneManager.LoadScene (SceneManager.GetActiveScene ().buildIndex, LoadSceneMode.Single); // unirxでのupdateみたいなやつ => everyupdate // keyboard up down left right 監視する // _playerview.UpdateAsObservable () // .Where (_ => !_playerview.IsObjectMoving && !_dangeonFieldModel.IsFieldSetting.Value && // ( // Input.GetKeyDown (KeyCode.UpArrow) || Input.GetKeyDown (KeyCode.DownArrow) || // Input.GetKeyDown (KeyCode.LeftArrow) || Input.GetKeyDown (KeyCode.RightArrow) // )) // //.ThrottleFirst (System.TimeSpan.FromSeconds (0.3f)) // 実行間隔の指定 // .Subscribe (_ => // { // _playerModel.ChangeVec3 (Input.GetAxis ("Horizontal"), Input.GetAxis ("Vertical")); // }); // var upkeyDownStream = this.UpdateAsObservable ().Where (_ => Input.GetKeyDown (KeyCode.UpArrow)); // var upkeyUpStream = this.UpdateAsObservable ().Where (_ => Input.GetKeyUp (KeyCode.UpArrow)); // //長押しの判定 // upkeyDownStream // .Where (_ => !_playerview.IsObjectMoving && !_dangeonFieldModel.IsFieldSetting.Value) // .SelectMany (_ => Observable.Timer(System.TimeSpan.FromSeconds(1))) // //途中でMouseUpされたらストリームをリセット // .TakeUntil (upkeyUpStream) // .RepeatUntilDestroy (this) // .Subscribe (_ => // { // Debug.Log("press"); // _playerModel.ChangeVec3 (Input.GetAxis ("Horizontal"), Input.GetAxis ("Vertical")); // }); }