Есть ли способ повернуть объект на основе позиции игроков в единстве 2d - PullRequest
1 голос
/ 04 ноября 2019

Я пытаюсь сделать базовый платформер, используя Unity, и у моего игрока есть что-то вроде оружия. Моя пуля стреляет только в одном месте, и я хотел бы, чтобы она вращалась вместе с игроком. Я новичок в C # и мне нужна помощь.

Я пытался использовать операторы if и else и пытался вручную повернуть его.

Мой код:

    using System.Collections;
    using System.Collections.Generic;
    using UnityEngine;

    public class fire : MonoBehaviour
    {
        public Transform player;

        public Rigidbody2D rb2d;

        public Transform enemy;

        public Transform myspawn;

        // Start is called before the first frame update
        void Start()
        {

        }

        // Update is called once per frame
        void Update()
        {
            if (Input.GetButtonDown("Spawn"))
            {
                transform.position = player.position;
                rb2d.velocity = new Vector2(10.0f, 0.0f);

            }

        }
        private void OnCollisionEnter2D(Collision2D collision)
        {
            if(collision.transform == enemy)
            {
                transform.position = myspawn.position;
            }

        }
    }

Я ожидаю, что результат будет вращать пулю с игроком, и, используя операторы if, я получил много разных ошибок. Фактически, я получил пулю, которая просто не двигалась, пока вы не нажмете ее вручную.

1 Ответ

0 голосов
/ 04 ноября 2019

Если ваше ружье стреляет только в одном направлении, вы можете сделать что-то вроде этого:

Создайте новую логическую переменную, назовите ее как isLookingRight в вашем скрипте контроллера игрока и установите для нее значение true, если вашигрок изначально смотрит на право. Всякий раз, когда игрок двигается влево, измените эту переменную на false и измените свой Update в коде, который вы предоставили этому:

void Update()
{
    if (Input.GetButtonDown("Spawn"))
    {
        transform.position = player.position;
        if(playerScript.isLookingRight){
            rb2d.velocity = new Vector2(10.0f, 0.0f);
        }
        else{
            rb2d.velocity = new Vector2(-10.0f, 0.0f);  
        }
}

То, что делает этот код, довольно просто, если ваш игрок смотрит влево, онпросто меняет скорость на противоположную скорости. Но вам нужно правильно изменить isLookingRight в вашем скрипте движения игрока.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...