叉乘实现角色和敌人的位置判断(左上,左下,右上,右下)

我们常常在游戏中遇到这种问题. 比如敌人遇到了主角就会朝他旋转过去. 或者判断主角在左边还是右边等等

效果图:

 

向量A,B的叉乘获得一个垂直于他们的C向量,我们可以通过这上面的值来判断敌人四个区域的某一区

 

代码的实现:

using UnityEngine;
using System.Collections;

public class Test : MonoBehaviour {

    public Transform a;
    public Transform b;
    public TextMesh text;
    public TextMesh oneResult;
    public TextMesh twoResult;

    public float distance;
    private float dot;

    public void Update()
    {
        //B在A的前方,A是主角,B是敌人
        Vector3 toOther = a.transform.position - b.position;

        //获取的Y可以判断敌人 在人物的左边和右边
        Vector3 chaCheng1 = Vector3.Cross(a.forward, toOther);
        Vector3 chaCheng2 = Vector3.Cross(a.right, toOther);

        oneResult.text = chaCheng1.ToString();
        twoResult.text = chaCheng2.ToString();

        Debug.Log("第一次值: " + chaCheng1);

        //获取的Y可以判断敌人 在人物的前边和后边
        Debug.Log("第二次值: " + chaCheng2);

        if (chaCheng1.y > 0 && chaCheng2.y > 0)
        {
            text.text = "位置: 左上";
        }
        if (chaCheng1.y < 0 && chaCheng2.y < 0)
        {
            text.text = "位置: 右下";

        }
        if (chaCheng1.y > 0 && chaCheng2.y < 0)
        {
            text.text = "位置: 左下";

        }
        if (chaCheng1.y < 0 && chaCheng2.y > 0)
        {
            text.text = "位置: 右上";

        }

    }

}

 

项目下载地址:  http://yunpan.cn/cdYkG48mxIGGD  访问密码 54c3

时间: 2024-10-31 05:49:10

叉乘实现角色和敌人的位置判断(左上,左下,右上,右下)的相关文章

Unity3d中角色模型和角色名字保持相对位置

3D游戏中,经常遇到这样的情况.角色模型上需要显示角色名字或者血条等信息. 如果用一个摄像机会有可能出现名字或血条显示不正常等问题,所以我采用两个摄像机.一个渲染名字或血条等UI,另一个渲染角色模型. 下面以NGUI为例,实现这一功能. 如图所示,一个相机负责渲染UI,另外一个负责渲染游戏场景. 再添加脚本NamePanel,代码如下: /* date:2014-10-13 author:wg description:英雄名字面板 */ using UnityEngine; using Syst

cortex-M3/M4死机位置判断

用了挺久的M4(nxp的),但是发现有一个问题挺让人讨厌的,就是程序死机了无法判断死机位置,之前看到一篇文章是通过查看SP LR等寄存器,看堆栈内容来查找.还要看memory里的地址再找函数地址,再看汇编代码.觉得很麻烦.ARM7内核还好判断一些(M3内核未验证,应该一样的知识M4多了个FPU). 偶然一次死机(数组越界).发现在Call Stack居然直接保存了死机的函数名称和地址.非常滴方便啊,哈哈.直接右键calle stack就能看到函数死在哪儿了.网上很少看到关于死机判断位置的文章.不

计算几何-点与多边形的位置判断-zoj1081Points Within

This article is made by Jason-Cow.Welcome to reprint.But please post the writer's address. http://www.cnblogs.com/JasonCow/ 叉积判方向 点积判角度 角度和=0°在外面 否则在里面 AC Code 这么短的计算几何,君难道不想收入囊中吗? 1 #include <algorithm> 2 #include <iostream> 3 #include <cs

【图形】点与直线位置判断(求点位于那两条直线之间)

应用情况: 给出一系列车道线(首尾端点),希望找出车位于哪个车道上.由于数据来源于图像投影,车道线彼此并不平行. 方案A: 假设车道线都在90度左右,则可直接利用点的x坐标与车道线两端平均x坐标距离进行判断.取x坐标距离最近的两条直线 方案B: 进一步推广到任意方向的直线,则可求点到车道线的距离.取点到直线距离最近的两条 参考:Point到直线 y = kx + b 距离 distance = abs(k * Point.x -  Point.y + b)/sqrt(k * k + 1); 方案

cocos2dx-3.10 45度地图 tiledmap+A*寻路

45度地图 寻路主要参考了某位博客文章,链接如下: cocos2dx 45度Staggered格式A*寻路 曼哈顿算法(待优化) 另外也参考了某位作者的正方形A* 寻路,所以这套A* 算法是可以兼正方形寻路也可以45度菱形寻路的. 现贴下代码: 地图类: #ifndef _MAP_LAYER_H_ #define _MAP_LAYER_H_ #include <cocos2d.h> #include "Role.h" #include "Astar.h"

BZOJ1087=Codevs2451=洛谷P1896&amp;P2326互不侵犯

1087: [SCOI2005]互不侵犯King Time Limit: 10 Sec  Memory Limit: 162 MBSubmit: 2885  Solved: 1693[Submit][Status][Discuss] Description 在N×N的棋盘里面放K个国王,使他们互不攻击,共有多少种摆放方案.国王能攻击到它上下左右,以及左上左下右上右下八个方向上附近的各一个格子,共8个格子. Input 只有一行,包含两个数N,K ( 1 <=N <=9, 0 <= K &

RecyclerView使用完全指南,是时候体验新控件了(二)

1. 概述 上一篇讲解了RecyclerView的基本用法,回顾下上一篇文章讲解内容. 水平列表展示,设置LayoutManager的方向性 竖直列表展示,设置LayoutManager的方向性 自定义间隔,RecyclerView.addItemDecoration() Item添加和删除动画,RecyclerView.setItemAnimator() 关于网格样式和瀑布流样式在本篇会仔细的介绍,细心的同学会发现,自定义间隔在上一篇文章中并没有太过深入,只是介绍了方法的调用时机,但是关于更换

基础复习(京东静态页面的实现)第二天

一.前言 经过第一天的练习后完成的页面的快速导航.顶部广告.搜索栏今天将继续完成下面的页面. 二.引入 在一般的情况下页面是从左到右,从上到下依次进行布局的.可是由于可以将通用的样式封装以便于后面的使用所以今天我们完成页面的最下面部分. 三.重点内容 ㈠ 相邻行内块元素的间距问题 在布局的时候,相邻的行内块元素之间默认有几像素的外间距.只能用浮动来解决这个问题. ㈡ Border-radius: 边框半径 这是CSS3的一个新属性,其作用是向元素添加圆角边框.他一共有四个值:左上 左下 右上 右

HyperDock,让Mac的窗口飞

三年前写了一篇文章,介绍了Windows 7下的Aero效果,其实最终是想引出来写Mac OS上能产生类似功能的HyperDock应用程序,可惜这一拖,就拖到连Windows 10都快要发布了.没有关心Windows是否有延续着非常华丽又实用的功能,毕竟过去4年里,Mac才是工作和日常中一直使用的电脑,能在Mac上找到实用的软件和工具来提高效率才有实际意义.对于Windows的怀念也只剩下Visual Studio和Viso,但每样东西都总能找到一个相近的代替品. 虽然过去了很长的时间,但是在这