private void process_input(float timeDelta) { direction = new Vector3(); var cameraTransform = camera.GetGlobalTransform(); var inputMovementVector = new Vector2(); if (Input.IsActionPressed("movement_forward")) { inputMovementVector.y += 1; } if (Input.IsActionPressed("movement_backward")) { inputMovementVector.y -= 1; } if (Input.IsActionPressed("movement_left")) { inputMovementVector.x -= 1; } if (Input.IsActionPressed("movement_right")) { inputMovementVector.x += 1; } inputMovementVector = inputMovementVector.Normalized(); direction += -cameraTransform.basis.z.Normalized() * inputMovementVector.y; direction += cameraTransform.basis.x.Normalized() * inputMovementVector.x; if (IsOnFloor()) { if (Input.IsActionJustPressed("movement_jump")) { velocity.y = JUMP_SPEED; } } if (Input.IsActionJustPressed("ui_cancel")) { if (Input.GetMouseMode() == Input.MouseMode.Visible) { Input.SetMouseMode(Input.MouseMode.Captured); } else { Input.SetMouseMode(Input.MouseMode.Visible); } } if (Input.IsActionPressed("movement_sprint")) { isSprinting = true; } else { isSprinting = false; } if (Input.IsActionJustPressed("flashlight")) { if (flashlight.IsVisibleInTree()) { flashlight.Hide(); } else { flashlight.Show(); } } }
private void process_input(float delta) { /*###############################################*/ /*WALKING*/ dir = new Vector3(); Transform cam_xform = camera.GetGlobalTransform(); Vector2 input_movement_vector = new Vector2(); if (Input.IsActionPressed("movement_forward")) { input_movement_vector.y += 1; } if (Input.IsActionPressed("movement_backward")) { input_movement_vector.y -= 1; } if (Input.IsActionPressed("movement_left")) { input_movement_vector.x -= 1; } if (Input.IsActionPressed("movement_right")) { input_movement_vector.x += 1; } input_movement_vector = input_movement_vector.Normalized(); dir += -cam_xform.basis.z.Normalized() * input_movement_vector.y; dir += cam_xform.basis.x.Normalized() * input_movement_vector.x; /*###############################################*/ /*###############################################*/ /*JUMPING*/ if (IsOnFloor()) { if (Input.IsActionJustPressed("movement_jump")) { vel.y = JUMP_SPEED; } } /*###############################################*/ /*###############################################*/ /*SPRINTING*/ if (Input.IsActionJustPressed("movement_sprint")) { is_sprinting = true; } else { is_sprinting = false; } /*###############################################*/ /*###############################################*/ /*Turning the flashlight on/off*/ if (Input.IsActionJustPressed("flashlight")) { if (flashlight.IsVisibleInTree()) { flashlight.Hide(); } else { flashlight.Show(); } } /*###############################################*/ /*###############################################*/ /*Capturing/Freeing the cursor*/ if (Input.IsActionJustPressed("ui_cancel")) { if (Input.GetMouseMode() == Input.MouseMode.Visible) { Input.SetMouseMode(Input.MouseMode.Captured); } else { Input.SetMouseMode(Input.MouseMode.Visible); } } /*###############################################*/ }
private void ProcessInput(float delta) { // ======================================================== // berjalan direction = new Vector3(); Transform camXform = Camera.GlobalTransform; Vector2 inputMovementVector = new Vector2(); if (Input.IsActionPressed("movement_forward")) { inputMovementVector.y += 1; } if (Input.IsActionPressed("movement_backward")) { inputMovementVector.y -= 1; } if (Input.IsActionPressed("movement_left")) { inputMovementVector.x -= 1; } if (Input.IsActionPressed("movement_right")) { inputMovementVector.x += 1; } if (Input.GetConnectedJoypads().Count > 0) { var joypadVec = Vector2.Zero; var osName = OS.GetName(); if (osName == "Windows" || osName == "X11") { joypadVec = new Vector2(Input.GetJoyAxis(0, 0), -Input.GetJoyAxis(0, 1)); } else if (osName == "OSX") { joypadVec = new Vector2(Input.GetJoyAxis(0, 1), Input.GetJoyAxis(0, 2)); } if (joypadVec.Length() < JOYPAD_DEADZONE) { joypadVec = Vector2.Zero; } else { joypadVec = joypadVec.Normalized() * ((joypadVec.Length() - JOYPAD_DEADZONE) / (1 - JOYPAD_DEADZONE)); } inputMovementVector += joypadVec; } inputMovementVector = inputMovementVector.Normalized(); // ======================================================== // ======================================================== // basis vector sudah ter-normalized direction += -camXform.basis.z * inputMovementVector.y; direction += camXform.basis.x * inputMovementVector.x; // ======================================================== // ======================================================== // melompat if (IsOnFloor()) { if (Input.IsActionPressed("movement_jump")) { _velocity.y = JUMP_SPEED; } } // ======================================================== // ======================================================== // menangkap/melepaskan cursor if (Input.IsActionJustPressed("ui_cancel")) { if (Input.GetMouseMode().Equals(Input.MouseMode.Captured)) { Input.SetMouseMode(Input.MouseMode.Captured); } else { Input.SetMouseMode(Input.MouseMode.Visible); } } // ======================================================== // =============================================================== // Sprinting if (Input.IsActionPressed("movement_sprint")) { _isSprinting = true; } else { _isSprinting = false; } // =============================================================== // Turning the flashlight if (Input.IsActionJustPressed("flashlight")) { if (_flashLight.IsVisibleInTree()) { _flashLight.Hide(); } else { _flashLight.Show(); } } // ======================================================================================= // process changing weapon var weaponChangeNumber = WEAPON_NAME_TO_NUMBER[_currentWeaponName]; if (Input.IsKeyPressed((int)KeyList.Key1)) { weaponChangeNumber = 0; } if (Input.IsKeyPressed((int)KeyList.Key2)) { weaponChangeNumber = 1; } if (Input.IsKeyPressed((int)KeyList.Key3)) { weaponChangeNumber = 2; } if (Input.IsKeyPressed((int)KeyList.Key4)) { weaponChangeNumber = 3; } if (Input.IsActionJustPressed("shift_weapon_positive")) { weaponChangeNumber += 1; } if (Input.IsActionJustPressed("shift_weapon_negative")) { weaponChangeNumber -= 1; } weaponChangeNumber = (byte)Mathf.Clamp(weaponChangeNumber, 0, WEAPON_NAME_TO_NUMBER.Count - 1); if (_changingWeapon == false) { if (_reloadingWeapon == false) { if (WEAPON_NUMBER_TO_NAME[weaponChangeNumber] != _currentWeaponName) { _changingWeaponName = WEAPON_NUMBER_TO_NAME[weaponChangeNumber]; _changingWeapon = true; _mouseScrollValue = weaponChangeNumber; } } } // ======================================================================================== // ======================================================================================== // firing the weapon if (Input.IsActionPressed("fire")) { if (_reloadingWeapon == false) { if (_changingWeapon == false) { var currentWeapon = _weapons[_currentWeaponName]; if (currentWeapon != null) { if (currentWeapon.AmmoInWeapon > 0) { if (AnimationManager.CurrentState == currentWeapon.IDLE_ANIM_NAME) { AnimationManager.SetAnimation(currentWeapon.FIRE_ANIM_NAME); } else { _reloadingWeapon = true; } } } } } } // ================================================================================ //================================================================================= // realoading weapon if (_reloadingWeapon == false) { if (_changingWeapon == false) { if (Input.IsActionJustPressed("reload")) { var currentWeapon = _weapons[_currentWeaponName]; if (currentWeapon != null) { if (currentWeapon.CAN_RELOAD == true) { var currentAnimState = AnimationManager.CurrentState; var isReloading = false; foreach (var weapon in _weapons.Values) { if (weapon != null) { if (currentAnimState == weapon.RELOAD_ANIM_NAME) { isReloading = true; } } } if (isReloading == false) { _reloadingWeapon = true; } } } } } } // ================================================================================== // ================================================================================== // Changing and throwing grenade if (Input.IsActionJustPressed("change_grenade")) { if (_currentGrenade == "Grenade") { _currentGrenade = "StickyGrenade"; } else if (_currentGrenade == "StickyGrenade") { _currentGrenade = "Grenade"; } } if (Input.IsActionJustPressed("fire_grenade")) { if (GRENADE_AMOUNTS[_currentGrenade] > 0) { GRENADE_AMOUNTS[_currentGrenade] -= 1; AbstractGrenade grenadeClone = null; if (_currentGrenade == "Grenade") { grenadeClone = _grenadeScene.Instance() as Grenade; } else if (_currentGrenade == "StickyGrenade") { grenadeClone = _stickyGrenadeScene.Instance() as StickyGrenade; } if (grenadeClone != null) { GetTree().Root.AddChild(grenadeClone); grenadeClone.GlobalTransform = GetNode <Spatial>("Rotation_Helper/Grenade_Toss_Pos").GlobalTransform; grenadeClone.ApplyImpulse(Vector3.Zero, grenadeClone.GlobalTransform.basis.z * GRENADE_THROW_FORCE); } } } // ================================================================================== // ================================================================================== if (Input.IsActionJustPressed("fire") && _currentWeaponName == "UNARMED") { if (_grabbedObject == null) { var state = GetWorld().DirectSpaceState; var centerPosition = GetViewport().Size / 2; var rayFrom = Camera.ProjectRayOrigin(centerPosition); var rayTo = rayFrom + Camera.ProjectRayNormal(centerPosition) * OBJECT_GRAB_RAY_DISTANCE; var rayResult = state.IntersectRay(rayFrom, rayTo, new Array { this, GetNode <Area>("Rotation_Helper/Gun_Fire_Points/Knife_Point/Area") }); if (rayResult.Count > 0) { if (rayResult["collider"] is RigidBody) { _grabbedObject = rayResult["collider"] as RigidBodyHitTest; (_grabbedObject as RigidBody).Mode = RigidBody.ModeEnum.Static; _grabbedObject.CollisionLayer = 0; _grabbedObject.CollisionMask = 0; } } } else { _grabbedObject.Mode = RigidBody.ModeEnum.Rigid; _grabbedObject.ApplyImpulse(Vector3.Zero, -Camera.GlobalTransform.basis.z.Normalized() * OBJECT_THROW_FORCE); _grabbedObject.CollisionLayer = 1; _grabbedObject.CollisionMask = 1; _grabbedObject = null; } } if (_grabbedObject != null) { Transform globalTransform = _grabbedObject.GlobalTransform; globalTransform.origin = Camera.GlobalTransform.origin + (-Camera.GlobalTransform.basis.z.Normalized() * OBJECT_GRAB_DISTANCE); _grabbedObject.GlobalTransform = globalTransform; } // ================================================================================== }
private void ProcessInput(float delta) { // ------------------------------------------------------------------- // Walking _dir = new Vector3(); Transform camXform = _camera.GlobalTransform; Vector2 inputMovementVector = new Vector2(); if (Input.IsActionPressed("movement_forward")) { inputMovementVector.y += 1; } if (Input.IsActionPressed("movement_backward")) { inputMovementVector.y -= 1; } if (Input.IsActionPressed("movement_left")) { inputMovementVector.x -= 1; } if (Input.IsActionPressed("movement_right")) { inputMovementVector.x += 1; } inputMovementVector = inputMovementVector.Normalized(); // Basis vectors are already normalized. _dir += -camXform.basis.z * inputMovementVector.y; _dir += camXform.basis.x * inputMovementVector.x; // ------------------------------------------------------------------- // ------------------------------------------------------------------- // Jumping if (IsOnFloor()) { if (Input.IsActionJustPressed("movement_jump")) { _vel.y = JumpSpeed; } } // ------------------------------------------------------------------- // ------------------------------------------------------------------- // Capturing/Freeing the cursor if (Input.IsActionJustPressed("ui_cancel")) { if (Input.GetMouseMode() == Input.MouseMode.Visible) { Input.SetMouseMode(Input.MouseMode.Captured); } else { Input.SetMouseMode(Input.MouseMode.Visible); } } // ------------------------------------------------------------------- if (Input.IsActionJustPressed("quit")) { GetTree().Quit(0); } // ------------------------------------------------------------------- // Sprinting if (Input.IsActionPressed("movement_sprint")) { _isSprinting = true; } else { _isSprinting = false; } // ------------------------------------------------------------------- // ------------------------------------------------------------------- // Flashlight on/off if (Input.IsActionJustPressed("flashlight")) { if (_flashlight.IsVisibleInTree()) { _flashlight.Hide(); } else { _flashlight.Show(); } } // ------------------------------------------------------------------- // ------------------------------------------------------------------- // Shoot weapon if (Input.IsActionJustPressed("shoot")) { currentWeapon.PrimaryFire(); } // ------------------------------------------------------------------- // ------------------------------------------------------------------- // Reload weapon if (Input.IsActionJustPressed("reload")) { currentWeapon.Reload(); } }
private void ProcessInput(float delta) { // ------------------------------------------------------------------- // Walking _dir = new Vector3(); Transform camXform = Camera.GlobalTransform; Vector2 inputMovementVector = new Vector2(); if (Input.IsActionPressed("movement_forward")) { inputMovementVector.y += 1; } if (Input.IsActionPressed("movement_backward")) { inputMovementVector.y -= 1; } if (Input.IsActionPressed("movement_left")) { inputMovementVector.x -= 1; } if (Input.IsActionPressed("movement_right")) { inputMovementVector.x += 1; } inputMovementVector = inputMovementVector.Normalized(); // Basis vectors are already normalized. _dir += -camXform.basis.z * inputMovementVector.y; _dir += camXform.basis.x * inputMovementVector.x; // ------------------------------------------------------------------- // ------------------------------------------------------------------- // Jumping if (IsOnFloor() && Input.IsActionJustPressed("movement_jump")) { _vel.y = JumpSpeed; } // ------------------------------------------------------------------- // ------------------------------------------------------------------- // Sprinting if (Input.IsActionPressed("movement_sprint")) { _isSprinting = true; } else { _isSprinting = false; } // ------------------------------------------------------------------- // ------------------------------------------------------------------- // Turning the flashlight on/off if (Input.IsActionJustPressed("flashlight")) { if (_flashlight.IsVisibleInTree()) { _flashlight.Hide(); } else { _flashlight.Show(); } } // ------------------------------------------------------------------- // Changing _weapons int _weaponChangeNumber = _weaponNameToNumber[_currentWeaponName]; if (Input.IsActionJustPressed("Weapon1")) { _weaponChangeNumber = 0; } if (Input.IsActionJustPressed("Weapon2")) { _weaponChangeNumber = 1; } if (Input.IsActionJustPressed("Weapon3")) { _weaponChangeNumber = 2; } if (Input.IsActionJustPressed("Weapon4")) { _weaponChangeNumber = 3; } if (Input.IsActionJustPressed("shift_weapon_positive")) { _weaponChangeNumber++; } if (Input.IsActionJustPressed("shift_weapon_negative")) { _weaponChangeNumber--; } _weaponChangeNumber = Mathf.Clamp(_weaponChangeNumber, 0, _weaponNumberToName.Count); if (_weaponNumberToName[_weaponChangeNumber] != _currentWeaponName) { if (!_reloadingWeapon && !_changingWeapon) { _changingWeaponName = _weaponNumberToName[_weaponChangeNumber]; _changingWeapon = true; _mouseScrollValue = _weaponChangeNumber; } } // ------------------------------------------------------------------- // ------------------------------------------------------------------- // Firing Weapon if (Input.IsActionPressed("fire") && !_changingWeapon && !_reloadingWeapon) { Weapon _currentWeapon = _weapons[_currentWeaponName]; if (_currentWeapon != null && _currentWeapon.AmmoInWeapon > 0) { if (AnimationPlayer.CurrentState == _currentWeapon.IdleAnimName) { AnimationPlayer.CallbackFunction = GD.FuncRef(this, nameof(FireBullet)); AnimationPlayer.SetAnimation(_currentWeapon.FireAnimName); } } else { _reloadingWeapon = true; } } // ------------------------------------------------------------------- // ------------------------------------------------------------------- // Reloading if (!_reloadingWeapon && !_changingWeapon && Input.IsActionJustPressed("reload")) { Weapon _currentWeapon = _weapons[_currentWeaponName]; if (_currentWeapon != null && _currentWeapon.CanReload) { string _currentAnimState = AnimationPlayer.CurrentState; bool _isReloading = false; foreach (string _weapon in _weapons.Keys) { Weapon _weaponNode = _weapons[_weapon]; if (_weaponNode != null && _currentAnimState == _weaponNode.ReloadingAnimName) { _isReloading = true; } } if (!_isReloading) { _reloadingWeapon = true; } } } // ------------------------------------------------------------------- // ------------------------------------------------------------------- // Changing and throwing grenades if (Input.IsActionJustPressed("change_grenade")) { if (_currentGrenade == 0) { _currentGrenade = 1; } else if (_currentGrenade == 1) { _currentGrenade = 0; } } if (Input.IsActionJustPressed("fire_grenade") && _grenadeAmmounts[_currentGrenade] > 0) { _grenadeAmmounts[_currentGrenade]--; Grenade _grenadeClone; if (_currentGrenade == 0) { _grenadeClone = (FragGrenade)_fragGrenadeScene.Instance(); } else { _grenadeClone = (StickyGrenade)_stickyGrenadeScene.Instance(); // Sticky grenades will stick to the player if we do not pass ourselves _grenadeClone.PlayerBody = this; } GetTree().Root.AddChild(_grenadeClone); _grenadeClone.GlobalTransform = GetNode <Spatial>("Rotation_Helper/FragGrenade_Toss_Pos").GlobalTransform; _grenadeClone.ApplyImpulse(new Vector3(0, 0, 0), _grenadeClone.GlobalTransform.basis.z * FragGrenadeThrowForce); } // ------------------------------------------------------------------- // ------------------------------------------------------------------- // Grabbing and throwing objects if (Input.IsActionJustPressed("fire") && _currentWeaponName == "UNARMED") { if (_grabbedObject == null) { PhysicsDirectSpaceState _state = GetWorld().DirectSpaceState; Vector2 _centerPosition = GetViewport().Size / 2; Vector3 _rayFrom = Camera.ProjectRayOrigin(_centerPosition); Vector3 _rayTo = _rayFrom + Camera.ProjectRayNormal(_centerPosition) * ObjectGrabRayDistance; Godot.Collections.Array _exclude = new Godot.Collections.Array(); _exclude.Add(this); _exclude.Add(GetNode <Area>("Rotation_Helper/Gun_Fire_Points/Knife/Area")); Godot.Collections.Dictionary _rayResult = _state.IntersectRay(_rayFrom, _rayTo, _exclude); if (_rayResult.Count != 0 && _rayResult["collider"] is RigidBody) { _grabbedObject = _rayResult["collider"]; RigidBody _grabbedRigid = (RigidBody)_grabbedObject; _grabbedRigid.Mode = RigidBody.ModeEnum.Static; _grabbedRigid.CollisionLayer = 0; _grabbedRigid.CollisionMask = 0; } } else { _grabbedRigid = (RigidBody)_grabbedObject; _grabbedRigid.Mode = RigidBody.ModeEnum.Rigid; _grabbedRigid.ApplyImpulse(new Vector3(0, 0, 0), -Camera.GlobalTransform.basis.z.Normalized() * ObjectThrowForce); _grabbedRigid.CollisionLayer = 1; _grabbedRigid.CollisionMask = 1; _grabbedRigid = null; _grabbedObject = null; } } if (_grabbedObject != null) { _grabbedRigid = (RigidBody)_grabbedObject; Transform _transform = new Transform(_grabbedRigid.GlobalTransform.basis, Camera.GlobalTransform.origin + (-Camera.GlobalTransform.basis.z.Normalized() * ObjectGrabDistance)); _grabbedRigid.GlobalTransform = _transform; } // ------------------------------------------------------------------- // ------------------------------------------------------------------- // Pause Popup if (Input.IsActionJustPressed("ui_cancel")) { if (_pausePopup == null) { _pausePopup = (PausePopup)_pausePopupScene.Instance(); _pausePopup.Player = this; _globals.CanvasLayer.AddChild(_pausePopup); _pausePopup.PopupCentered(); Input.SetMouseMode(Input.MouseMode.Visible); GetTree().Paused = true; } else { Input.SetMouseMode(Input.MouseMode.Captured); _pausePopup = null; } } // ------------------------------------------------------------------- }
private void ProcessInput(float delta) { // Walking var camGlobalTransform = _camera.GetGlobalTransform(); var inputMovementVector = new Vector3(); if (Input.IsActionPressed("char_forward")) { inputMovementVector.z += 1; } if (Input.IsActionPressed("char_backward")) { inputMovementVector.z -= 1; } if (Input.IsActionPressed("char_left")) { inputMovementVector.x -= 1; } if (Input.IsActionPressed("char_right")) { inputMovementVector.x += 1; } inputMovementVector = inputMovementVector.Normalized(); // Basis vectors are already normalized. _dir = -camGlobalTransform.basis.z * inputMovementVector.z + camGlobalTransform.basis.x * inputMovementVector.x; // Jumping if (IsOnFloor()) { if (Input.IsActionJustPressed("char_jump")) { _vel.y = JumpSpeed; } } if (Input.IsActionPressed("char_sprint")) { _isSprinting = true; } else { _isSprinting = false; } // Turning the flashlight on/off if (Input.IsActionJustPressed("char_flashlight")) { if (_flashlight.IsVisibleInTree()) { _flashlight.Hide(); } else { _flashlight.Show(); } } if (Input.IsActionJustPressed("action_1")) { var lookingAtObject = _rayCast.GetCollider(); if (lookingAtObject is Node node && node.GetParent() is ContainerNode container) { container.HotCode(_hotcode1Node.Command); } } // Capturing/Freeing the cursor if (Input.IsActionJustPressed("mouse_grab")) { Input.SetMouseMode(Input.GetMouseMode() == Input.MouseMode.Visible ? Input.MouseMode.Captured : Input.MouseMode.Visible); } }