- Статус
- Оффлайн
- Регистрация
- 24 Янв 2019
- Сообщения
- 992
- Реакции
- 357
крч начал делать ранер по этому ролику
(noad)
моделька двигается но не перемещается вот мой код, помогите пожалуйста, почему не работает
вот скирны
CharacterController
Swipe controller
моделька двигается но не перемещается вот мой код, помогите пожалуйста, почему не работает
вот скирны
Пожалуйста, авторизуйтесь для просмотра ссылки.
Пожалуйста, авторизуйтесь для просмотра ссылки.
CharacterController
C:
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
public class PlayerController : MonoBehaviour
{
private CharacterController controller;
private Vector3 dir;
[SerializeField] private int speed;
private int lineToMove = 1;
public float lineDistance = 4;
void Start()
{
controller = GetComponent<CharacterController>();
}
private void Update()
{
if (SwipeController.swipeRight)
{
if (lineToMove < 2)
lineToMove++;
}
if (SwipeController.swipeLeft)
{
if (lineToMove > 0)
lineToMove--;
}
Vector3 targetPosition = transform.position.z * transform.forward + transform.position.y * transform.up;
if (lineToMove == 0)
targetPosition += Vector3.left * lineDistance;
else if (lineToMove == 2)
targetPosition += Vector3.right * lineDistance;
transform.position = targetPosition;
}
void FixedUpdate()
{
dir.z = speed;
controller.Move(dir * Time.fixedDeltaTime);
}
}
Swipe controller
C:
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
public class SwipeController : MonoBehaviour
{
public static bool tap, swipeLeft, swipeRight, swipeUp, swipeDown;
private bool isDraging = false;
private Vector2 startTouch, swipeDelta;
private void Update()
{
tap = swipeDown = swipeUp = swipeLeft = swipeRight = false;
if (Input.touches.Length > 0)
{
if (Input.touches[0].phase == TouchPhase.Began)
{
tap = true;
isDraging = true;
startTouch = Input.touches[0].position;
}
else if (Input.touches[0].phase == TouchPhase.Ended || Input.touches[0].phase == TouchPhase.Canceled)
{
isDraging = false;
Reset();
}
}
swipeDelta = Vector2.zero;
if (isDraging)
{
if (Input.touches.Length < 0)
swipeDelta = Input.touches[0].position - startTouch;
else if (Input.GetMouseButton(0))
swipeDelta = (Vector2)Input.mousePosition - startTouch;
}
if (swipeDelta.magnitude > 100)
{
float x = swipeDelta.x;
float y = swipeDelta.y;
if (Mathf.Abs(x) > Mathf.Abs(y))
{
if (x < 0)
swipeLeft = true;
else
swipeRight = true;
}
else
{
if (y < 0)
swipeDown = true;
else
swipeUp = true;
}
Reset();
}
}
private void Reset()
{
startTouch = swipeDelta = Vector2.zero;
isDraging = false;
}
}