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