
我已经创建了一个迷你地图,我在迷你地图(在右上角)中显示了敌人的当前位置,所以我创建了导航图像并附加为敌人GameObject的孩子。
但是导航图像也会随着它的父游戏对象(敌人)一起旋转,在迷你地图上也是如此。我希望导航图像只在x轴上旋转,以便它在迷你地图中正确可见。
using UnityEngine.AI;
[RequireComponent(typeof(NavMeshAgent))]
public class EnemyFollow : MonoBehaviour {
private RaycastHit hit;
NavMeshAgent mAgent;
public Transform player;
private TargetPlayer target;
public GameObject impactEffect;
public int damageToPlayer = 10;
private int range = 100;
void Start() {
mAgent = GetComponent<NavMeshAgent>();
}
void Update() {
transform.LookAt(player);
if (Physics.Raycast(transform.position, transform.forward, out hit, range)) {
if ("Player".Equals(hit.transform.tag)) {
//follow player
mAgent.destination = player.position;
//shoot bullet
GameObject impactDestroy = Instantiate(impactEffect, hit.point, Quaternion.LookRotation(hit.normal));
Destroy(impactDestroy, 1f);
//damage to Player
target = hit.transform.GetComponent<TargetPlayer>();
if (target != null) {
target.TakeDamage(damageToPlayer);
}
}
}
}
}发布于 2020-08-27 01:35:07

我找到了一个非常简单的解决方案
只需将此脚本附加到您只想在x轴上旋转的子对象中
Using Unity
public class BlockRotation: MonoBehaviour {
void Update() {
transform.eulerAngles = new Vector3(0, transform.eulerAngles.y, 0);
}
}发布于 2020-08-27 05:25:17
当将旋转应用到你的小地图时,另一个简单的解决方案是使用Transform.RotateAround()。如果你还没有,你需要确定当前角度和你想要的角度之间的差异;它看起来像这样:
float deltaAngle = desiredAngle - currentAngle;
transform.RotateAround(transform.position, Vector3.up, deltaAngle);https://stackoverflow.com/questions/63602928
复制相似问题