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;
}
}
我已经搜索了很多,但我无法让它工作。我尝试使用 spriteRenderer,但它也不起作用。我真的需要帮助。(顺便说一句,我的播放器与播放器一起旋转)
解决方案
在我看来,您的系统只是在旋转物体,尽管它面向的方向是什么。我想如果你放一个指向你喜欢的方向的箭头或三角形而不是枪,它看起来会很好。
所以我要做的是:
if (the rotation is backwards)
render the sprite flipped vertically
else
render the sprite normally
推荐阅读
- javascript - PHP 表单打开新窗口
- php - 当我尝试从不同的 php 文件调用图像 src 时,为什么无法显示图像?
- python - FileNotFoundError:[WinError 2] 在 Windows 10 上将数字写入文件期间
- javascript - react 测试库 - 测试 antd 自动完成组件
- docker - 如何在分子中定义仅名称不同的多个实例?
- php - Laravel 7 发布联系表给我错误 419
- data-structures - 如果我手动创建具有 > 8 个键的映射,为什么 Clojure (1.8) 会创建 HashMap,但如果我使用 zipmap 创建具有 > 8 个键的映射,为什么会创建 ArrayMap?
- reactjs - 在反应管理员中获取 authProvider 中的 redux-store 状态
- html - 当 parent 设置为 display:none 时强制 html 元素可见
- python - Keras FlowFromDirectory 中的 Shuffle 参数似乎不起作用