- Home /
AddForce on diagonals C#
Hello. Currently working on a spell:
It will be launched whenever a player presses a button, and will head towards the camera's current angle. Right now what I was trying was
Vector3 fwd = TP_Motor.Hero.transform.TransformDirection(_horizontal, _vertical, 0f);
Horizontal and Vertical are both private variables that are periodically set to the Camera's pitch and yaw.
What the code does is it sends projectiles off based on the _horizontal value and not much of anything else.
I imagine I'll have to do some work with Quaternions, though I don't quite know how to use a Vector3 AddForce() with a Quaternion. Casting it doesn't really seem to do the trick.
Also, using an Update() function is out of the question; I got it working that way with transform.translate but I'm going to have like 100 of these spells up, and with only 10 my FPS drops
EDIT
I'm going to be trying to do something with Raycasting..
Basically if the ray collides with an object, then I will mark that vector3 as the position in world space for the object to move to using a coroutine. I hope it won't be too OTT in terms of memory, but at this point it's my only option :D
If you guys have any "better" suggestions then please let me know lol
Answer by Lairinus · Dec 03, 2012 at 05:12 AM
Okay, after approximately 7 more hours of doing meaningless math, I stumbled across the easiest solution. Then I proceeded to cry and flail my arms in relentless anger. A few desks were broken in the process, but the doctor expects me to fully recover.
The way I coded my characters and cameras was to basically have it so that I had 1 camera with different characters. What that means is that the best and most solid source to use would be to set the Vector3 to the Camera's transform.forward rather than the object's.
It turns out if you set a Vector3 to a character, it only calculates the direction and doesn't take in account angles which never even occurred to me
Basically my code is now along the lines of..
Vector3 fwd = Camera.mainCamera.transform.TransformDirection (transform.forward.x,transform.rotation.z - Camera.mainCamera.transform.rotation.x * 2, transform.forward.z );
then I have just AddForce(fwd * (the force variable);
Your answer
Follow this Question
Related Questions
Multiple Cars not working 1 Answer
Distribute terrain in zones 3 Answers
translate javascript for loop to C# 2 Answers
Deteriorating force on object? 0 Answers
Roll a ball camera problem? 1 Answer