[英]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.