游戏制作之路(22)创建移动的敌人

栏目: 后端 · 发布时间: 6年前

内容简介:在前面介绍一个角色控制的功能,角色可以走动,也可以跳起来,还可以开火打静止的敌人,不过这样还是不爽,能否创建一些可以移动的敌人呢?本文就来解决这个问题。因此,跟前面一样创建一个胶囊体,然后再创建一个立方体当作鼻子,同样设置它们的父子关系,然后设置胶囊体的位置为(-2.5, 1.5, 18),跟前面同样的方式把鼻子设置为(0, 0.5, 0.5),这样就设置好敌人。如下图:接着在工程project下面创建一个材料,把它命名为Enemy,如下图:

在前面介绍一个角色控制的功能,角色可以走动,也可以跳起来,还可以开火打静止的敌人,不过这样还是不爽,能否创建一些可以移动的敌人呢?本文就来解决这个问题。因此,跟前面一样创建一个胶囊体,然后再创建一个立方体当作鼻子,同样设置它们的父子关系,然后设置胶囊体的位置为(-2.5, 1.5, 18),跟前面同样的方式把鼻子设置为(0, 0.5, 0.5),这样就设置好敌人。如下图:

游戏制作之路(22)创建移动的敌人

接着在工程project下面创建一个材料,把它命名为Enemy,如下图:

游戏制作之路(22)创建移动的敌人

创建这个材料之后,就可以把材料Enemy拖动场景里的Enemy和ENose了,这时这个敌人就使用这个材料来渲染,不像我们前面的物体,都是采用缺省白色的材料了。这样就可以区分玩家角色和敌人。

敌人创建之后,还有一个问题,敌人怎么样朝着玩家的角色进行行走,这里就涉及向量的计算问题了,我们知道当两个向量进行相减时,就可以计算出来两个向量的点方向。

游戏制作之路(22)创建移动的敌人

比如这里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得在这里设置,如下图:

游戏制作之路(22)创建移动的敌人

这样就可以找到角色对象保存在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游戏开发入门

http://edu.csdn.net/course/detail/5690


以上所述就是小编给大家介绍的《游戏制作之路(22)创建移动的敌人》,希望对大家有所帮助,如果大家有任何疑问请给我留言,小编会及时回复大家的。在此也非常感谢大家对 码农网 的支持!

查看所有标签

猜你喜欢:

本站部分资源来源于网络,本站转载出于传递更多信息之目的,版权归原作者或者来源机构所有,如转载稿涉及版权问题,请联系我们

单元测试之道Java版

单元测试之道Java版

David Thomas、Andrew Hunt / 陈伟柱、陶文 / 电子工业 / 2005-1 / 25.00元

程序员修炼三部曲丛书包含了四本书,介绍了每个注重实效的程序员和成功团队所必备的一些工具。 注重实效的程序员都会利用反馈来指导开发,并驱动个人的开发流程。编码的时候,最有用的反馈来自于“单元测试”。 为了测试一座桥梁,不会只在晴朗的天气,开一辆汽车从桥中间穿过,就认为已经完成了对桥梁的测试。然而许多程序员却正在使用这种测试方法——把这种一次顺利通过称为“测试”。事实上,注重实效的程序员应......一起来看看 《单元测试之道Java版》 这本书的介绍吧!

CSS 压缩/解压工具
CSS 压缩/解压工具

在线压缩/解压 CSS 代码

html转js在线工具
html转js在线工具

html转js在线工具

RGB CMYK 转换工具
RGB CMYK 转换工具

RGB CMYK 互转工具