Esempio n. 1
0
func (a *AIAdv) AimAdjedIntoCube(estpos *go4game.Vector3D, o *SPObj, bulletType GameObjectType) *go4game.Vector3D {
	if !estpos.IsIn(GameConst.WorldCube2) && o.ObjType != GameObjMain {
		return nil
	}
	lenori := a.me.PosVector.LenTo(*estpos)
	if o.ObjType == GameObjMain {
		changed := estpos.MakeIn(GameConst.WorldCube)
		if changed != 0 {
			//log.Printf("target %v bounce %b", o.ID, changed)
		}
	}
	lennew := a.me.PosVector.LenTo(*estpos)
	lenrate := lennew / lenori
	vt := estpos.Sub(a.me.PosVector).NormalizedTo(GameConst.MoveLimit[bulletType]).Imul(lenrate)
	return &vt
}