mirror of
https://gitee.com/jisol/jisol-game/
synced 2025-09-27 02:36:14 +00:00
提交
This commit is contained in:
@@ -12,7 +12,7 @@ export default class GDetection{
|
||||
rect.x -= rect.width / 2;
|
||||
rect.y -= rect.height / 2;
|
||||
//@ts-ignore
|
||||
return PhysicsSystem2D.instance.testAABB(rect).map(item => item.getComponent(GRoleBase<any>));
|
||||
return PhysicsSystem2D.instance.testAABB(rect).map(item => item.getComponent(GRoleBase<any>)).filter(role => !!role);
|
||||
}
|
||||
//检测角色
|
||||
static testPointRole(pos:Vec2){
|
||||
|
@@ -11,6 +11,10 @@ import { TB } from "../../../config/data/schema";
|
||||
import GRoleValues, { GRoleAttackType } from "../values/GRoleValues";
|
||||
import GAttributeBase from "../values/attribute/GAttributeBase";
|
||||
import { GPetAminEnum } from "../anim/GPetAnim";
|
||||
import NOV2DSimple from "../../../../../extensions/ngame/assets/ngame/util/collide/OV/NOV2DSimple";
|
||||
import NOVBase from "../../../../../extensions/ngame/assets/ngame/util/collide/OV/NOVBase";
|
||||
import { BoxCollider2D } from "cc";
|
||||
import { Vec3 } from "cc";
|
||||
const { ccclass, property } = _decorator;
|
||||
|
||||
export enum GRoleAnimEvent{
|
||||
@@ -74,12 +78,18 @@ export default abstract class GRoleBase<T> extends GObject<T>{
|
||||
this._values = value;
|
||||
}
|
||||
|
||||
//添加避障
|
||||
ov:NOVBase;
|
||||
|
||||
get():this{
|
||||
if(this.isDie) return null;
|
||||
return this;
|
||||
}
|
||||
|
||||
onSyncLoad(){
|
||||
|
||||
//避障
|
||||
this.ov = new NOV2DSimple(this.node.getComponent(BoxCollider2D));
|
||||
|
||||
if(!this.spine) this.spine = this.node.getComponent(JNSkeleton);
|
||||
//如果没有生成则直接销毁
|
||||
@@ -135,16 +145,23 @@ export default abstract class GRoleBase<T> extends GObject<T>{
|
||||
|
||||
|
||||
if(Vec2.len(normal) >= Vec2.len(mins)){
|
||||
this.node.setWorldPosition(Object.assign(v3(),target.clone()));
|
||||
this.setWorldPosition(Object.assign(v3(),target.clone()));
|
||||
return true;
|
||||
}else{
|
||||
//移动
|
||||
this.node.worldPosition = this.node.worldPosition.subtract(v3(normal.x*dt*this.moveSpeed,normal.y*dt*this.moveSpeed,0))
|
||||
this.setWorldPosition(this.node.worldPosition.subtract(v3(normal.x*dt*this.moveSpeed,normal.y*dt*this.moveSpeed,0)));
|
||||
return false;
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
//设置世界坐标
|
||||
setWorldPosition(worldPos:Vec3){
|
||||
if(this.ov.moveTo(worldPos)){
|
||||
this.node.setWorldPosition(worldPos);
|
||||
}
|
||||
}
|
||||
|
||||
//朝向目标
|
||||
onTowardsTarget(role:GRoleBase<{}>){
|
||||
//获取两个坐标差值向量
|
||||
|
Reference in New Issue
Block a user