(五)坦克大战--(3)敌人自动追踪

1,前言

敌方坦克的脚本参考自–这位博主

2,步骤

2.1,新建Cube

新建一个Cube,并命名为EnemyTank
然后给EnemyTank添加Box Collider和刚体属性
注意:这里的Tag和Mass暂时不用理会
在这里插入图片描述

2.2,添加模型

然后将本地的敌方坦克的模型添加给EnemyTank,并调整一下模型和Cube的位置。
我这里的坦克模型是从Asset Store下载的
在这里插入图片描述

2.3,挂载脚本

然后将脚本挂载到EnemyTank上

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

public class EnemyTankController : MonoBehaviour
{
     /**
      * Debug.DrawLine:在场景视图中绘制一条线段,从字面上理解这个应该是只有调试环境的时候才会生效,真正游戏里边是看不到的。
      * GameObject.FindGameObjectWithTag:获取带有指定标记的游戏对象。
      * Quaternion.LookRotation:求两点间旋转的四元数。
      * Quaternion.Slerp:在两个旋转四元数中做差值,用来做旋转的过渡效果。
      * Time.deltaTime:获取上一帧到当前所经过的时间,单位毫秒
      */
       
       
       
     /// 
     /// 移动速度
     /// 
     public float MoveSpeed = 4;

     /// 
     /// 旋转速度
     /// 
     public float RotateSpeed = 3;
     //玩家控制的坦克
     private Transform m_TargetTransform;
     //敌人坦克
     private Transform m_SelfTransform;

     void Awake()
     {
         var player = GameObject.FindGameObjectWithTag("Player");
         m_TargetTransform = player.transform;
         //这里的transform是坦克的初始的位置
         m_SelfTransform = transform;
         // print("transform is : "+transform);
     }

     void Update()
     {
         //调试场景中画一条线,从敌人坦克开始,到玩家坦克技术,红色
         Debug.DrawLine(m_SelfTransform.position, m_TargetTransform.position, Color.red);
         //求得两物体之间旋转的角度  两点间旋转的四元数
         var lookRotation = Quaternion.LookRotation(m_TargetTransform.position - m_SelfTransform.position);
         //地方坦克旋转的角度
         m_SelfTransform.rotation = Quaternion.Slerp(m_SelfTransform.rotation, lookRotation, RotateSpeed * Time.deltaTime);
         //当距离小于50的时候,敌方坦克不再靠近
         if (Vector3.Distance(transform.position, m_TargetTransform.position) >= 50f)
         {
             //改变敌方坦克位置,从而使敌方坦克移动
             m_SelfTransform.position += m_SelfTransform.forward * MoveSpeed * Time.deltaTime;
         }
     }
}

注意:这个脚本有时候会让坦克无脑"怼墙",意思是坦克会沿着玩家的方向笔直前进,如果前进路线上有障碍物,就会怼墙。

2.4,细节调整

接下来就是细节的调整,依旧是调整一下EnemyTank的Box Collider的形状大小,使之刚好包裹坦克模型
在这里插入图片描述调整完之后,在Asset下新建一个目录叫做Prefabs,专门用来存储Prefab(预制体),然后将我们暂时做好的只会移动的敌方坦克(EnemyTank)拖到Prefabs目录中就会自动变成一个预制体了,方便我们后续的开发。

未完待续…

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值