[Help] how to Move a vector 3 by pressing a key
-
I'm working on a téléportation script so :
When my car is in front of another car, this draw a marker ( I know how to do this)
The problem is how can I move this drawmarker to a left location, right,...
How can I move my drawmarker by numpad(8= forward, 2 = backward , 4 = left and 6 = right)
I tried :
Vehicle car = the nearest vehicle
Vector3 MoveMaker;
Float multiplier;
Running it on Ontick:
If (game.Iskeypressing(Keys.numpad6)
{
MoveMaker = car.position+car.rightvector * multiplier++
}
If (game.Iskeypressing(Keys.numpad4)
{
MoveMaker = car.position+car.rightvector * multiplier--
}
If (game.Iskeypressing(Keys.numpad8)
{
MoveMaker = car.position+car.forwardvector * multiplier++
}
When I pressing 6 and 4 numpad no problem, the marker is draw , moving from right to left but when I pressing 8 the marker start drawing from car not from last coordination
-
I'm having a hard time understanding what you are trying to accomplish, but i'll answer as best as I can.
To move back and left, you need to multiply by a negative value:
For instance: car.RightVector * -multiplier++
and for back
car.ForwardVector * -multiplier++
-
Here is a quick script, I just called it Gravity-Gun, for grabbing entities and move their position back and forth using the ForwardVector - aim at an entity, press J, use Numpad 8 and Numpad 2 to move entity further away or closer to you, use the mouse to drag entity around:
private static bool _isHoldingEntity; private static Entity _targetEntity; private static float _gravityGunDistanceToTarget = 15.0f; private static bool InfiniteAmmo { get; set; } public WeaponService() { Tick += OnTick; KeyDown += OnKeyDown; } private void OnKeyDown(object sender, KeyEventArgs e) { if (e.KeyCode == Keys.J) { _targetEntity = Game.Player.TargetedEntity; _isHoldingEntity = !_isHoldingEntity; if (_targetEntity is Ped ped) if (ped.IsInVehicle()) _targetEntity = ped.CurrentVehicle; } if (_isHoldingEntity && e.KeyCode == Keys.NumPad8) _gravityGunDistanceToTarget += 1.0f; if (_isHoldingEntity && e.KeyCode == Keys.NumPad2) if (_gravityGunDistanceToTarget > 5.0f) _gravityGunDistanceToTarget -= 1.0f; } private void OnTick(object sender, EventArgs e) { GravityGun(_gravityGunDistanceToTarget); } private void GravityGun(float distance) { if (!_isHoldingEntity || _targetEntity == null) return; var camPos = GameplayCamera.Position + GameplayCamera.ForwardVector * distance; camPos.Z += (float)Math.Sin(Game.Player.Character.RotationVelocity.Z - 2.0f); _targetEntity.Position = camPos; }
Edit: You can move the key presses to the Tick for a more fluid experience.