有没有一种方法可以根据玩家在统一2D中的位置旋转对象

我正在尝试使用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语句会出现很多不同的错误。我得到的实际输出是子弹,除非您手动推动子弹,否则它不会动。

XZ345786 回答:有没有一种方法可以根据玩家在统一2D中的位置旋转对象

如果您的枪只向一个方向射击,您可以执行以下操作:

创建一个新的布尔变量,在播放器控制器脚本中将其命名为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

本文链接:https://www.f2er.com/3169706.html

大家都在问