繁体   English   中英

有没有办法在统一 2d 中根据玩家 position 旋转 object

[英]Is there a way to rotate an object based on players position in unity 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;
            }

        }
    }

我希望 output 与播放器一起旋转子弹,并且使用 if 语句我得到了很多不同的错误。 我得到的实际 output 是在您手动推动子弹之前子弹不会移动。

如果你的枪只朝一个方向射击,你可以这样做:

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM