- Home /
Unity Networking accelerometer goes back and forward instead of going to the left or right.
I am making a ball game and i want my ball to go to the left and right with Input.acceleration without networking this script works fine. but when i am using this script on the network the accelerometer lets my ball go back and forward instead of going to the left or right.
I am using 2 scripts that control the ball.
BallUserControlMultiplayer script :
using System; using UnityEngine; using UnityStandardAssets.CrossPlatformInput; using UnityEngine.Networking; using UnityStandardAssets.Characters; namespace UnityStandardAssets.Vehicles.Ball { public class BallUserControlMultiplayer : NetworkBehaviour { // // private Ball ball; // Reference to the ball controller.
private Vector3 move;
// the world-relative desired move direction, calculated from the camForward and user input.
private Transform cam; // A reference to the main camera in the scenes transform
private Vector3 camForward; // The current forward direction of the camera
private bool jump; // whether the jump button is currently pressed
private void Awake()
{
// Set up the reference.
ball = GetComponent<Ball>();
// get the transform of the main camera
if (Camera.main != null)
{
cam = Camera.main.transform;
}
else
{
Debug.LogWarning(
"Warning: no main camera found. Ball needs a Camera tagged \"MainCamera\", for camera-relative controls.");
// we use world-relative controls in this case, which may not be what the user wants, but hey, we warned them!
}
}
private void Update()
{
// Get the axis and jump input.
//Input.acceleration.x;
float h = Input.acceleration.x;
float v = CrossPlatformInputManager.GetAxis("Vertical");
jump = CrossPlatformInputManager.GetButton("Jump");
// calculate move direction
if (cam != null)
{
// calculate camera relative direction to move:
camForward = Vector3.Scale(cam.forward, new Vector3(1, 0, 1)).normalized;
move = (v * camForward + h * cam.right).normalized;
}
else
{
// we use world-relative directions in the case of no main camera
move = (v * Vector3.forward + h * Vector3.right).normalized;
}
}
private void FixedUpdate()
{
// Call the Move function of the ball controller
ball.Move(move, jump);
jump = false;
}
// public void Move(Vector3 inputVelocity)
// {
// Vector3 conveyorBeltVelocity = new Vector3(5f, 0f, 0f);
// GetComponent<Rigidbody>().velocity = conveyorBeltVelocity + inputVelocity;
// }
}
}
And the Ball script:
using System; using UnityEngine; using UnityEngine.Networking;
namespace UnityStandardAssets.Vehicles.Ball {
public class Ball : NetworkBehaviour
{
[SerializeField] private float m_MovePower = 5; // The force added to the ball to move it.
[SerializeField] private bool m_UseTorque = true; // Whether or not to use torque to move the ball.
[SerializeField] private float m_MaxAngularVelocity = 25; // The maximum velocity the ball can rotate at.
[SerializeField] private float m_JumpPower = 2; // The force added to the ball when it jumps.
private const float k_GroundRayLength = 1f; // The length of the ray to check if the ball is grounded.
private Rigidbody m_Rigidbody;
public Vector3 exteriorForce = new Vector3(1f, 0f, 0f);
private void Start()
{
m_Rigidbody = GetComponent<Rigidbody>();
// Set the maximum angular velocity.
GetComponent<Rigidbody>().maxAngularVelocity = m_MaxAngularVelocity;
}
public void Move(Vector3 moveDirection, bool jump)
{
// If using torque to rotate the ball...
if (m_UseTorque)
{
// ... add torque around the axis defined by the move direction.
m_Rigidbody.AddTorque(new Vector3(moveDirection.z, 0, -moveDirection.x)*m_MovePower);
}
else
{
// Otherwise add force in the move direction.
m_Rigidbody.AddForce(moveDirection*m_MovePower);
}
// If on the ground and jump is pressed...
if (Physics.Raycast(transform.position, -Vector3.up, k_GroundRayLength) && jump)
{
// ... add force in upwards.
m_Rigidbody.AddForce(Vector3.up*m_JumpPower, ForceMode.Impulse);
}
m_Rigidbody.AddForce(exteriorForce);
}
}
}
Can someone help me ? plz
Your answer
Follow this Question
Related Questions
Accelerometer networking goes to the wrong side. 0 Answers
Networking Accelerometer uses wrong axis 0 Answers
Networking Accelerometer uses wrong axis 0 Answers
Photon Unity Networking fix physics delay 0 Answers
Networking Accelerometer uses wrong axis 0 Answers