首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Unity:仅允许父对象在指定轴上旋转

Unity:仅允许父对象在指定轴上旋转
EN

Stack Overflow用户
提问于 2020-08-27 01:35:07
回答 2查看 422关注 0票数 0

我已经创建了一个迷你地图,我在迷你地图(在右上角)中显示了敌人的当前位置,所以我创建了导航图像并附加为敌人GameObject的孩子。

但是导航图像也会随着它的父游戏对象(敌人)一起旋转,在迷你地图上也是如此。我希望导航图像只在x轴上旋转,以便它在迷你地图中正确可见。

代码语言:javascript
复制
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);
                }
            }
            
         
        }
    }

}
EN

回答 2

Stack Overflow用户

发布于 2020-08-27 01:35:07

我找到了一个非常简单的解决方案

只需将此脚本附加到您只想在x轴上旋转的子对象中

代码语言:javascript
复制
Using Unity

public class BlockRotation: MonoBehaviour {

    void Update()  {

    transform.eulerAngles = new Vector3(0, transform.eulerAngles.y, 0);

    }
}
票数 1
EN

Stack Overflow用户

发布于 2020-08-27 05:25:17

当将旋转应用到你的小地图时,另一个简单的解决方案是使用Transform.RotateAround()。如果你还没有,你需要确定当前角度和你想要的角度之间的差异;它看起来像这样:

代码语言:javascript
复制
  float deltaAngle = desiredAngle - currentAngle;
  transform.RotateAround(transform.position, Vector3.up, deltaAngle);
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/63602928

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档