// public functions -------------------------------------------------- public override void LookAt(Vector3 sourcePostion, Vector3 targetPosition, CharacterPose characterPose) { float lookAngle = Mathf.Abs(Utility.GetAngle (sourcePostion, targetPosition, true, false)) + defaultSpriteAngle; float revisionAngle; switch (characterPose) { case CharacterPose.CROWL: { revisionAngle = Mathf.Clamp (lookAngle, Utility.CalcDefaultLeftAngle (defaultSpriteAngle)-Character.CROWL_POSE_ANGLE_RANGE, Utility.CalcDefaultLeftAngle (defaultSpriteAngle)+Character.CROWL_POSE_ANGLE_RANGE); } break; default: { revisionAngle = Mathf.Clamp (lookAngle, Utility.CalcDefaultUpAngle (defaultSpriteAngle), Utility.CalcDefaultDownAngle (defaultSpriteAngle) -60.0f); } break; } transform.rotation = Quaternion.Euler(new Vector3(0,0,revisionAngle)); }
// public functions --------------------------------------------------- public override void LookAt(Vector3 sourcePostion, Vector3 targetPosition, CharacterPose characterPose) { //_bulletSpawn.LookAt (transform.position, targetPosition, characterPose); const float bulletSpawnDefaultAngle = 0.0f; float lookAngle = -Utility.GetAngle (sourcePostion, targetPosition) + bulletSpawnDefaultAngle; float revisionAngle = 0.0f; switch (characterPose) { case CharacterPose.CROWL: { bool isCharacterFlip = targetPosition.x > transform.parent.parent.transform.position.x; if (!isCharacterFlip) { revisionAngle = Mathf.Clamp (lookAngle, Utility.CalcDefaultLeftAngle (bulletSpawnDefaultAngle)-Character.CROWL_POSE_ANGLE_RANGE, Utility.CalcDefaultLeftAngle (bulletSpawnDefaultAngle)+Character.CROWL_POSE_ANGLE_RANGE); } else if (isCharacterFlip) { revisionAngle = Mathf.Clamp (lookAngle, Utility.CalcDefaultRightAngle (bulletSpawnDefaultAngle)-Character.CROWL_POSE_ANGLE_RANGE, Utility.CalcDefaultRightAngle (bulletSpawnDefaultAngle)+Character.CROWL_POSE_ANGLE_RANGE); } Debug.Log (isCharacterFlip); } break; default: { revisionAngle = lookAngle; } break; } //_bulletSpawn.transform.rotation = Quaternion.Euler(new Vector3(0,0,revisionAngle)); _bulletSpawn.rotation = Quaternion.Euler(new Vector3(0,0,revisionAngle)); }
// public functions --------------------------------------------------- public void Move(float horizontal, float vertical, float horizontalRaw, float verticalRaw) { if (_death) { return; } // move Vector2 position = transform.position; if (pose == CharacterPose.SKY) { position.x += horizontal * MoveSpeed(); } else { position.x += horizontalRaw * MoveSpeed(); } transform.position = position; Vector2 velocity = _rigidbody.velocity; if (vertical > 0) { velocity.y = boosterSpeed; } _rigidbody.velocity = velocity; // pose if (IsSkying ()) { pose = CharacterPose.SKY; } else { if (-0.5f <= vertical && vertical < 0.0f) { pose = CharacterPose.CROUCH; } else if (-1.0f <= vertical && vertical < -0.5f) { pose = CharacterPose.CROWL; } else if (vertical == 0.0f) { pose = CharacterPose.STAND; } } // direction if (horizontalRaw == 0) { moveDirection = MoveDirection.STOP; } else { moveDirection = MoveDirection.FORWARD; if ((horizontal > 0 && !_flip) || (horizontal < 0 && _flip)) { flip = !flip; } } }
void FixedUpdate() { if (_death) { if (IsSkying ()) { pose = CharacterPose.SKY; } else { pose = CharacterPose.STAND; } } // test else { if (Input.GetKeyDown (KeyCode.Q)) { Death (DeathDirection.BACK); } else if (Input.GetKeyDown (KeyCode.E)) { Death (DeathDirection.FRONT); } } }
// public functions -------------------------------------------------- public override void LookAt(Vector3 sourcePostion, Vector3 targetPosition, CharacterPose characterPose) { base.LookAt (sourcePostion, targetPosition, characterPose); _gun.LookAt (sourcePostion, targetPosition, characterPose); }