团结枪翻转

时间:2020-05-19 18:36:26

标签: visual-studio

我正在制作一个自上而下的射击游戏,当我将枪指向后方时,它是颠倒的。这是我的播放器脚本:

using System.Collections;
using System.Collections.Generic;
using UnityEngine;

public class Player : MonoBehaviour
{
public float moveSpeed = 5f;
public Rigidbody2D rb;
public Camera cam;
Vector2 movement;
Vector2 mousePos;
public GameObject crossHair;
public SpriteRenderer sr;



void Start() {
    Cursor.visible = false;
}

// Update is called once per frame
void Update()
{
    sr = GetComponent<SpriteRenderer>();
    rb = GetComponent<Rigidbody2D>();
    movement.x = Input.GetAxisRaw("Horizontal");
    movement.y = Input.GetAxisRaw("Vertical");
    mousePos = cam.ScreenToWorldPoint(Input.mousePosition);
    crossHair.transform.position = new Vector2(mousePos.x, mousePos.y);

}

void FixedUpdate()
{
    rb.velocity = new Vector2(movement.x, movement.y) * moveSpeed;

    Vector3 lookDir = mousePos - rb.position;
    lookDir.Normalize();
    float angle = Mathf.Atan2(lookDir.y, lookDir.x) * Mathf.Rad2Deg;
    rb.rotation = angle;

    if (transform.position.y >= 6.4f) {
        transform.position = new Vector2(transform.position.x, 6.4f);
    }
    if (transform.position.y <= -6.4f) {
        transform.position = new Vector2(transform.position.x, -6.4f);
    }
    if (transform.position.x >= 11.9) {
        transform.position = new Vector2(11.9f, transform.position.y);
    }
    if (transform.position.x <= -11.9) {
        transform.position = new Vector2(-11.9f, transform.position.y);
    }
    float z = transform.rotation.eulerAngles.z;
    if (z > 0 && z < 180 && !sr.flipX)
        sr.flipX = true;
    else if (z < 360 && z > 180 && sr.flipX)
        sr.flipX = false;
}

void Flip(){
    Vector3 Scaler = transform.localScale;
    Scaler.y *= -1;
    transform.localScale = Scaler;
}

}

My gun is upside down

我进行了很多搜索,但无法正常工作。我尝试了spriteRenderer,但它也不起作用。我真的需要帮助。(顺便说一下,我的播放器随播放器一起旋转)

1 个答案:

答案 0 :(得分:0)

对我来说,听起来就像您的系统只是旋转对象而无需面对任何方向。我想如果您将箭头或三角形指向想要的方向而不是枪,看起来会很好。

所以我要做的是以下事情:

if (the rotation is backwards)
   render the sprite flipped vertically
else
   render the sprite normally