public static void HandleMovementInput(GameObject character, float horizontalAxisVal, float verticalAxisVal, bool isRunning) { CharacterSpeed characterSpd = character.GetComponent <CharacterSpeed>(); if (Mathf.Abs(verticalAxisVal) > 0.01f) { if (isRunning) { character.transform.position += character.transform.forward * (verticalAxisVal * characterSpd.fRunSpeed * Time.deltaTime); } else if (Mathf.Abs(verticalAxisVal) > 0.95f) { character.transform.position += character.transform.forward * (verticalAxisVal * characterSpd.fMoveSpeed * Time.deltaTime); } else { character.transform.position += character.transform.forward * (verticalAxisVal * characterSpd.fSlowSpeed * Time.deltaTime); } } else { verticalAxisVal = 0.0f; } if (Mathf.Abs(horizontalAxisVal) > 0.01f) { character.transform.position += character.transform.right * (horizontalAxisVal * characterSpd.fSlowSpeed * Time.deltaTime); } else { horizontalAxisVal = 0.0f; } }
public void OnSlashCommand(MessageEventArgs args, SlashCommand command) { // client sends "&gc info 1" on entering the world var split = command.Command.Split(' '); switch (split[0].ToLower(CultureInfo.InvariantCulture)) { case "&quit": args.Session.Send(new Quit(false)); break; case "&exit": args.Session.Send(new Quit(true)); break; case "&speed": if (split.Length > 1 && ushort.TryParse(split[1], out ushort value)) { var speed = new CharacterSpeed(value, 100, false); args.Session.Send(speed); } break; case "&up": if (split.Length > 1 && ushort.TryParse(split[1], out ushort height)) { var coords = _selected.Coordinates; _selected.Coordinates = new Coordinates(coords.X, coords.Y, coords.Z + height, coords.Heading); var position = new PositionAndObjectId(_selected); args.Session.Send(position); } break; } }
public static void HandleMovementInputTargeted(GameObject character, float verticalAxisVal, bool isRunning, Vector3 targetPosition) { CharacterSpeed characterSpd = character.GetComponent <CharacterSpeed>(); if (Mathf.Abs(verticalAxisVal) > 0.01f) { if (isRunning) { character.transform.position = Vector3.MoveTowards(character.transform.position, targetPosition, verticalAxisVal * characterSpd.fRunSpeed * Time.deltaTime); } else if (Mathf.Abs(verticalAxisVal) > 0.95f) { character.transform.position = Vector3.MoveTowards(character.transform.position, targetPosition, verticalAxisVal * characterSpd.fMoveSpeed * Time.deltaTime); } else { character.transform.position = Vector3.MoveTowards(character.transform.position, targetPosition, verticalAxisVal * characterSpd.fSlowSpeed * Time.deltaTime); } } }
public static float HandleRotationInputTargeted(GameObject character, Vector3 targetPosition) { CharacterSpeed characterSpd = character.GetComponent <CharacterSpeed>(); Vector3 characterForward = character.transform.TransformDirection(Vector3.forward); Vector3 toTarget = targetPosition - character.transform.position; float angleToTarget = Vector3.Dot(characterForward.normalized, toTarget.normalized); float angleInRad = Mathf.Acos(angleToTarget); float angleInDeg = angleInRad * Mathf.Rad2Deg; if (angleInDeg < 1.0f) { return(angleInDeg); } character.transform.Rotate(Vector3.up, angleInRad); return(angleInDeg); }
private void SetWalkStatus() { tvec = arTexture.tvec; if (tvec != null) { tVec.x = (float)tvec.get(0, 0)[0]; tVec.y = (float)tvec.get(1, 0)[0]; tVec.z = Mathf.Abs((float)tvec.get(2, 0)[0]); // Set run and walk threshold once get tvec if (_runThreshold == 0) { _runThreshold = tVec.z * 0.9f; _walkThreshold = tVec.z * 1.2f; if (_calibrateHeadPos) { _xHeadOffset = tVec.x; } } // Set movement direction and speed _movingDirection = transform.forward; _characterSpeed = characterSpeedSets.Find(x => x.guestState == GetComponent <Transformation>().currentGuestState); if (!_characterSpeed.canVerticalMove) { _movingDirection.y = 0f; } // Set movement if (tVec.z < _runThreshold) { // Run rb.MovePosition(transform.position + _movingDirection * _characterSpeed.runSpeed * Time.deltaTime); // transform.position += _movingDirection * _characterSpeed.runSpeed * Time.deltaTime; isMoveText.text = "The player is running"; SoundManager.instance.isMoving = true; SoundManager.instance.isRunning = true; } else if (tVec.z < _walkThreshold) { // Walk rb.MovePosition(transform.position + _movingDirection * _characterSpeed.walkSpeed * Time.deltaTime); // transform.position += _movingDirection * _characterSpeed.walkSpeed * Time.deltaTime; isMoveText.text = "The player is walking"; SoundManager.instance.isMoving = true; SoundManager.instance.isRunning = false; } else { // Walk back (can be stop, will discuss later) //transform.position -= _movingDirection * _characterSpeed.walkSpeed * Time.deltaTime; isMoveText.text = "the player stops"; SoundManager.instance.isMoving = false; SoundManager.instance.isRunning = false; } } else { SoundManager.instance.isMoving = false; } if (GetComponent <Transformation>().currentGuestState == GuestState.Vampier) { PlayMovementSound(); } else { SoundManager.instance.StopFootstep(); } }