Я пытаюсь остановить силу, воздействующую на персонажа. Код написан таким образом для Android. Вот сценарий:
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
public class Movement : MonoBehaviour
{
//variables
public float moveSpeed = 300;
public GameObject character;
private Rigidbody2D characterBody;
private float ScreenWidth;
// Use this for initialization
void Start()
{
ScreenWidth = Screen.width;
characterBody = character.GetComponent<Rigidbody2D>();
}
// Update is called once per frame
void Update()
{
int i = 0;
//loop over every touch found
while (i < Input.touchCount)
{
if (Input.GetTouch(i).position.x > ScreenWidth / 2)
{
//move right
RunCharacter(1.0f);
}
if (Input.GetTouch(i).position.x < ScreenWidth / 2)
{
//move left
RunCharacter(-1.0f);
}
++i;
}
}
void FixedUpdate()
{
#if UNITY_EDITOR
RunCharacter(Input.GetAxis("Horizontal"));
#endif
}
private void RunCharacter(float horizontalInput)
{
//move player
characterBody.AddForce(new Vector2(horizontalInput * moveSpeed * Time.deltaTime, 0));
}
}
Я понятия не имею, как остановить силу, так как я супер новичок, а также имейте в виду, что этот скрипт также написан, поэтому можно использовать Android Touch и скрипт.
Как вы хотите остановить силу?
Если вы хотите, чтобы он остановился немедленно, вы можете написать characterBody.velocity = Vector2.zero, как упомянул Ruzihm в комментариях.
Если вы хотите, чтобы игрок постепенно замедлялся до полной остановки, вы можете добавить трение к игроку либо с помощью физики, либо в коде, уменьшив скорость на определенный % в цикле обновления.
Как я могу определить, когда касание было удалено. Например, вы сняли палец
@GCIИрландия docs.unity3d.com/ScriptReference/Input.GetTouch.html
characterBody.velocity=Vector2.zero;
?