Как сделать, чтобы 3D-объект следовал моему пальцу слева направо на Android?
Я новичок в единстве и разработке игр, поэтому я попытался сделать игру. Все работало хорошо, пока я не подумал о переходе с игры на ПК на 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;
}
}
}
}
1 ответ
Вы используете кнопки GUI для перемещения плеера?
Если нет, вы можете использовать: горизонтальный = Input.GetAxis("Mouse X")
и вертикальный =Input.GetAxis("Mouse Y")
чтобы определить, где игрок разместил палец на экране.
Получив их, вы должны назначить их объекту через Transform через
transform.Rotate(horizontal, vertical ,z);
transform.Translate(horizontal, vertical ,z);
transform.position(horizontal, vertical ,z);
Проверьте это для получения дополнительной информации.