alborov011 | Дата: Воскресенье, 10 Ноября 2019, 15:21 | Сообщение # 1 | Тема: Вопрос-Ответ - мини вопросы по созданию игр |
уже был
Сейчас нет на сайте
| я делаю игру для двоих на юнити. два игрока играют на одной клаве, у одного управление стрелками, у другого A, D, W. сделал два скрипта на каждого игрока. различие только в кнопках управления. но, когда я пытаюсь управлять сразу двумя игроками они как будто связаны и не могут ходить, по одному все хорошо работает. в Юнити я новичек. как это исправить ?
Приветик
|
|
| |
alborov011 | Дата: Воскресенье, 10 Ноября 2019, 13:39 | Сообщение # 2 | Тема: Игра для двоих на юнити |
уже был
Сейчас нет на сайте
| я делаю игру для двоих на юнити. два игрока играют на одной клаве, у одного управление стрелками, у другого A, D, W. сделал два скрипта на каждого игрока. различие только в кнопках управления. но, когда я пытаюсь управлять сразу двумя игроками они как будто связаны и не могут ходить, по одному все хорошо работает. в Юнити я новичок.
using System.Collections; using System.Collections.Generic; using UnityEngine;
public class Person1 : MonoBehaviour { [SerializeField] private float speed = 15.0f; [SerializeField] private float jumpForce = 15.0f; [SerializeField] private int lives = 5;
private bool isgrounded = false;
private Rigidbody2D rb; private Animator animator;
private CharState State { get { return (CharState)animator.GetInteger("State"); } set { animator.SetInteger("State", (int)value); } }
private void Awake() { rb = GetComponent<Rigidbody2D>(); animator = GetComponent<Animator>(); }
private void FixedUpdate() { ChekGround(); }
private void Update() { if (isgrounded) State = CharState.Idle; if (Input.GetKey(KeyCode.A) || Input.GetKey(KeyCode.D)) Run(); if (Input.GetKeyDown(KeyCode.W) && isgrounded) Jump();
}
private void Run() { Vector3 direction = transform.right * Input.GetAxis("Horizontal"); transform.position = Vector3.MoveTowards(transform.position, transform.position + direction, speed * Time.deltaTime); if (isgrounded) State = CharState.Run;
}
private void Jump() { rb.AddForce(transform.up * jumpForce, ForceMode2D.Impulse);
}
private void ChekGround() { Collider2D[] colliders = Physics2D.OverlapCircleAll(transform.position, 0.9f); isgrounded = colliders.Length > 1; if (!isgrounded) State = CharState.Jump; }
}
public enum CharState { Idle, Run, Jump, }
Приветик
Сообщение отредактировал alborov011 - Воскресенье, 10 Ноября 2019, 17:27 |
|
| |