public void Init(SpriteRenderer renderer, SlowPoint point, PlayerDeploy deploy) { transform.SetLayer(Layers.Player); Deploy = deploy; SpriteRenderer = renderer; // Material = renderer.material; RedPoint = point; Actions = ControllerPc.GetActions(); _aniStyle = PlayerMoveStyle.Idle; transform.localScale = Vector3.one * deploy.scale; InitRigid(); SupportMgr = new PlayerSupportMgr(); SupportMgr.Init(this); Instance = this; }
//移动 private void Move(Vector3 dir) { var moveSpeed = InSlow ? Deploy.slowSpeed : Deploy.speed; var targetPos = transform.position + dir * Time.fixedDeltaTime * moveSpeed; Rigid2D.MovePosition(targetPos); if (MathUtility.FloatEqual(dir.x, 0)) { AniStyle = PlayerMoveStyle.Idle; return; } if (dir.x > 0 && AniStyle != PlayerMoveStyle.RightIdle) { AniStyle = PlayerMoveStyle.RightMove; } if (dir.x < 0 && AniStyle != PlayerMoveStyle.LeftIdle) { AniStyle = PlayerMoveStyle.LeftMove; } }
//移动动画处理 private void UpdateAnimation() { if (GameSystem.FixedFrameCount < _nextAnimatorFrame) { return; } List <Sprite> sprites; if (SpriteDic.TryGetValue(AniStyle, out sprites)) { if (sprites.Count > 0) { SpriteRenderer.sprite = sprites[_currAniIdx]; _currAniIdx++; if (_currAniIdx >= sprites.Count) { if (AniStyle == PlayerMoveStyle.LeftMove) { AniStyle = PlayerMoveStyle.LeftIdle; } else if (AniStyle == PlayerMoveStyle.RightMove) { AniStyle = PlayerMoveStyle.RightIdle; } else { _currAniIdx = 0; } } } } _nextAnimatorFrame = GameSystem.FixedFrameCount + Deploy.frameSpeed[(int)AniStyle]; }
//停止移动 private void StopMove() { AniStyle = PlayerMoveStyle.Idle; }