内容简介:在前面介绍一个角色控制的功能,角色可以走动,也可以跳起来,还可以开火打静止的敌人,不过这样还是不爽,能否创建一些可以移动的敌人呢?本文就来解决这个问题。因此,跟前面一样创建一个胶囊体,然后再创建一个立方体当作鼻子,同样设置它们的父子关系,然后设置胶囊体的位置为(-2.5, 1.5, 18),跟前面同样的方式把鼻子设置为(0, 0.5, 0.5),这样就设置好敌人。如下图:接着在工程project下面创建一个材料,把它命名为Enemy,如下图:
在前面介绍一个角色控制的功能,角色可以走动,也可以跳起来,还可以开火打静止的敌人,不过这样还是不爽,能否创建一些可以移动的敌人呢?本文就来解决这个问题。因此,跟前面一样创建一个胶囊体,然后再创建一个立方体当作鼻子,同样设置它们的父子关系,然后设置胶囊体的位置为(-2.5, 1.5, 18),跟前面同样的方式把鼻子设置为(0, 0.5, 0.5),这样就设置好敌人。如下图:
接着在工程project下面创建一个材料,把它命名为Enemy,如下图:
创建这个材料之后,就可以把材料Enemy拖动场景里的Enemy和ENose了,这时这个敌人就使用这个材料来渲染,不像我们前面的物体,都是采用缺省白色的材料了。这样就可以区分玩家角色和敌人。
敌人创建之后,还有一个问题,敌人怎么样朝着玩家的角色进行行走,这里就涉及向量的计算问题了,我们知道当两个向量进行相减时,就可以计算出来两个向量的点方向。
比如这里a向量减去b向量,就得一个从D指向B的向量,也就是得到任意两个向量的方向关系。因此,敌人朝着玩家角色方向跟踪,就不断地采用玩家的位置向量减去敌人的位置向量,就可以计算出来方向,当敌人向这个方向进行移动,就可以看到敌人跟踪玩家了。因此,搞懂原理之后,就可以来写代码,如下:
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
public class EnemyMovement : MonoBehaviour {
public float speed = 2.0f;
public float turnSpeed = 180.0f;
private CharacterController controller;
private Transform player;
// Use this for initialization
void Start () {
controller = GetComponent<CharacterController>();
player = GameObject.FindWithTag("Player").transform;
}
// Update is called once per frame
void Update () {
Vector3 direction = player.position - transform.position;
direction.y = 0;
transform.rotation = Quaternion.RotateTowards(transform.rotation, Quaternion.LookRotation(direction), turnSpeed * Time.deltaTime);
controller.Move(transform.forward * speed * Time.deltaTime);
}
}
这段代码是EnemyMovement,关联到敌人对象上,当然它也是创建了一个CharacterController组件,把碰撞体都要去掉,鼻子的碰撞体也要去掉。在Start函数里,首先获取本组件的角色组件到controller变量里,通过标签找到玩家角色对象,玩家的角色标签记Player得在这里设置,如下图:
这样就可以找到角色对象保存在player变量里。通过下面这行代码:
Vector3 direction = player.position - transform.position;
就可以计算玩家所在的方向向量,然后通过Quaternion.RotateTowards转动敌人的方向,让它的鼻子朝着玩家进行移动。
到这里就可以完成敌人的跟踪功能。
单片机编译器之链接器
https://edu.csdn.net/course/detail/8437
比特币源码入门教程
https://edu.csdn.net/course/detail/6998
深入浅出Matplotlib
https://edu.csdn.net/course/detail/6859深入浅出Numpy
http://edu.csdn.net/course/detail/6149
Python游戏开发入门
以上所述就是小编给大家介绍的《游戏制作之路(22)创建移动的敌人》,希望对大家有所帮助,如果大家有任何疑问请给我留言,小编会及时回复大家的。在此也非常感谢大家对 码农网 的支持!
猜你喜欢:本站部分资源来源于网络,本站转载出于传递更多信息之目的,版权归原作者或者来源机构所有,如转载稿涉及版权问题,请联系我们。
Agile Web Application Development with Yii 1.1 and PHP5
Jeffrey Winesett / Packt Publishing / 2010-08-27
In order to understand the framework in the context of a real-world application, we need to build something that will more closely resemble the types of applications web developers actually have to bu......一起来看看 《Agile Web Application Development with Yii 1.1 and PHP5》 这本书的介绍吧!