信息
所以我正在尝试制作一个自上而下的无尽竞技场战斗游戏,你的盾牌也可以作为你的进攻手段。盾牌应该在玩家前方生成,并在玩家移动和旋转时保持在前方(同时按住 mouse1(它会这样做))。释放 mouse1 后,盾牌应该像弹丸一样向前射击。
问题
但是,当放开mouse1时,盾牌会向前移动一点然后冻结,但是无论玩家在哪里,它们都会像玩家在0、0一样移动。
(我知道这有点令人困惑,所以这是一张照片:) (三角形是播放器)代码这是我的播放器控制器脚本:
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
public class PlayerController : MonoBehaviour
{
public Rigidbody2D rb;
public GameObject Shield;
public float moveSpeed = 4.3f;
public float sheildSpeed = 2f;
Vector2 movement;
bool isDead = false;
void Update()
{
movement.x = Input.GetAxisRaw("Horizontal");
movement.y = Input.GetAxisRaw("Vertical");
Vector3 mouseScreen = Input.mousePosition;
Vector3 mouse = Camera.main.ScreenToWorldPoint(mouseScreen);
transform.rotation = Quaternion.Euler(0, 0, Mathf.Atan2(mouse.y - transform.position.y, mouse.x - transform.position.x) * Mathf.Rad2Deg - 90);
if (Input.GetMouseButtonDown(0)) {
Shield = Instantiate(Shield, transform.position + transform.forward + transform.up, transform.rotation);
Shield.transform.parent = transform;
}
if (Input.GetMouseButtonUp(0)) {
Shield.transform.parent = null;
}
}
void FixedUpdate() {
if (!isDead) {
rb.MovePosition(rb.position + movement * moveSpeed * Time.fixedDeltaTime);
}
}
}
这是sheild脚本:
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
public class ShieldController : MonoBehaviour
{
public float sheildSpeed = 2f;
void FixedUpdate()
{
this.GetComponent<Rigidbody2D>().MovePosition(this.transform.up * sheildSpeed);
}
}
注意
我希望已经为您提供了足够的信息来帮助我,但是如果您需要/想要更多详细信息,请留下 aaa 评论,我希望能回复您需要的任何信息 :)