Я новичок в единстве и разработке игр, поэтому я попытался сделать игру.Все работало хорошо, пока я не подумал о переходе с игры на ПК на Android.
Движение на ПК работало хорошо, но я не могу найти никакого кода для такого же движения для Android.
Это то, что я использую для движения ПК
public class PlayerMovement : MonoBehaviour
{
public Rigidbody rb;
public float forwardForce = 2000f;
public float sidewayForce = 500f;
// Update is called once per frame
void FixedUpdate()
{
rb.AddForce(0, 0, forwardForce * Time.deltaTime);
if ( Input.GetKey("d") )
{
rb.AddForce(sidewayForce * Time.deltaTime, 0, 0, ForceMode.VelocityChange);
}
if (Input.GetKey("a"))
{
rb.AddForce(-sidewayForce * Time.deltaTime, 0, 0, ForceMode.VelocityChange);
}
if (rb.position.y < -1f)
{
FindObjectOfType<GameManager>().EndGame();
}
}
}
, и это то, что я использовал для движения андроида, но единственная проблема в том, что он не идет вперед, а игрок не делаетдаже не двигаться.Этот скрипт каким-то образом перемещает платформу, на которой находится игрок.
public class PlayerMovANDROID : MonoBehaviour
{
// Use this for initialization
GameObject hitObj;
RaycastHit hit;
private float speed = 1;
void Start()
{
}
// Update is called once per frame
void Update()
{
foreach (Touch touch in Input.touches)
{
switch (touch.phase)
{
case TouchPhase.Began:
Ray ray = Camera.main.ScreenPointToRay(touch.position);
if (Physics.Raycast(ray, out hit, 10))
{
hitObj = hit.collider.gameObject;
}
break;
case TouchPhase.Moved:
// If the finger is on the screen, move the object smoothly to the touch position
float step = speed * Time.deltaTime; // calculate distance to move
if (hitObj != null)
hitObj.transform.position = Camera.main.ScreenToWorldPoint(new Vector3(touch.position.x, touch.position.y, hitObj.transform.position.z));
break;
}
}
}
}