簡體   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